java 类初始化的顺序

在类中变量定义的顺序决定了它们初始化的顺序。即使变量定义散布在方法定义之间,它们仍会在任何方法(包括构造器)被调用之前得到初始化。例如:

java 复制代码
class Window {
Window(int marker){
System.out.println("Window("+ marker + ")");
    }
}

class House {
Window w1=new Window(1);

House(){
System.out.println("House()");
w3=new Window(33);
  }


Window w2 =new Window(2);
void f(){
System.out.println("f()");

}

Window w3=new Window(3);
}

public class OrderOfInitialization {
public static void main(String[] args){
House h= new House();
h.f();
    } 
}

输出:

java 复制代码
输出:
Window(1)
Window(2)
Window(3)
House()
Window(33)
f()

在 House 类中,故意把几个 Window 对象的定义散布在各处,以证明它们全都会在调用构造器或其他方法之前得到初始化。此外,w3在构造器中被再次赋值。由输出可见,引用w3被初始化了两次:次在调用构造器前,次在构造器调用期间(第一次引用的对象将被丢弃,并作为垃圾回收)。这乍一看可能觉得效率不高,但保证了正确的初始化。试

相关推荐
恋猫de小郭8 分钟前
Meta 宣布加入 Kotlin 基金会,将为 Kotlin 和 Android 生态提供全新支持
android·开发语言·ios·kotlin
望获linux16 分钟前
【实时Linux实战系列】CPU 隔离与屏蔽技术
java·linux·运维·服务器·操作系统·开源软件·嵌入式软件
JosieBook19 分钟前
【Java编程动手学】使用IDEA创建第一个HelloJava程序
java·开发语言·intellij-idea
Thomas_YXQ19 分钟前
Unity3D DOTS场景流式加载技术
java·开发语言·unity
summer夏12326 分钟前
2025.07 做什么
java·android studio
旷世奇才李先生28 分钟前
Ruby 安装使用教程
开发语言·后端·ruby
钢铁男儿37 分钟前
C# 委托(调用带引用参数的委托)
java·mysql·c#
ysa05103042 分钟前
Dijkstra 算法#图论
数据结构·算法·图论
Apex Predator44 分钟前
windows安装maven环境
java·maven
泓博1 小时前
Objective-c把字符解析成字典
开发语言·ios·objective-c