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被初始化了两次:次在调用构造器前,次在构造器调用期间(第一次引用的对象将被丢弃,并作为垃圾回收)。这乍一看可能觉得效率不高,但保证了正确的初始化。试

相关推荐
多多*几秒前
上传文件相关业务,采用策略模式+模版方法模式进行动态解耦
java·开发语言
晨非辰2 分钟前
【面试高频数据结构(四)】--《从单链到双链的进阶,读懂“双向奔赴”的算法之美与效率权衡》
java·数据结构·c++·人工智能·算法·机器学习·面试
im_AMBER2 分钟前
数据结构 03 栈和队列
数据结构·学习·算法
沐雨橙风ιε7 分钟前
Spring Boot整合Apache Shiro权限认证框架(实战篇)
java·spring boot·后端·apache shiro
左师佑图12 分钟前
Apache POI SXSSFWorkbook 报错“没有那个文件或目录”问题排查与解决方案
java·apache·excel
凸头20 分钟前
以AtomicInteger为例的Atomic 类的底层CAS细节理解
java·jvm·算法
艾派森23 分钟前
基于 Rokid CXR-M SDK 构建 AR 远程专家协作系统:从零实现眼镜端自定义 UI 与实时交互
java
赴前尘31 分钟前
Go 通道非阻塞发送:优雅地处理“通道已满”的场景
开发语言·后端·golang
cxyxiaokui00138 分钟前
🔥不止于三级缓存:Spring循环依赖的全面解决方案
java·后端·spring
UCoding43 分钟前
我们来学AI编程 -- vscode开发java
java·vscode·ai编程