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

相关推荐
CoderYanger2 分钟前
Java SE——12.异常(≠错误)《干货笔记》
java·开发语言
Data_agent11 分钟前
1688获得1688店铺所有商品API,python请求示例
java·开发语言·python
一晌小贪欢16 分钟前
【Python办公】-图片批量添加文字水印(附代码)
开发语言·python·图片水印·python水印·python添加水印·图片添加水印
why15118 分钟前
面经整理——算法
java·数据结构·算法
Yeats_Liao19 分钟前
CANN Samples(十三):Ascend C 算子开发入门
c语言·开发语言
越来越无动于衷21 分钟前
Java 实现 WebService(SOAP)联网调用:从原理到实战
java·开发语言
静水楼台x22 分钟前
Java之String系列--intern方法的作用及原理
java·spring
专注于大数据技术栈23 分钟前
java学习--枚举(Enum)
java·学习
愤怒的代码24 分钟前
Java 面试 100 题深度解析 · 专栏总览与大纲
java·面试
银迢迢27 分钟前
idea控制台中文乱码采用好几种方法一直解决不了
java·ide·intellij-idea