java 中类的初始化顺序

本文详细解析了Java中类的初始化顺序及其静态行为,包括静态对象、静态代码块、一般对象、普通代码块与构造方法之间的执行顺序,以及仅调用静态变量或静态方法时的行为特点。

//测试代码:

1
public class Test02 2 { 3 public Test02() 4 { 5 System.out.println("Test02"); 6 } 7 public static void main(String[] args) 8 { 9 Test03 test03= new Test03();   //1 10 //Test03.f(); //2 11 // System.out.println(Test03.i); //3 12 } 13 } 14 15 class Test03 16 { 17 static int i = 3; 18 static Test02 test02 = new Test02(); 19 Test01 test01 = new Test01(); 20 21 static 22 { 23 System.out.println("static"); 24 } 25 { 26 System.out.println("nostatic"); 27 } 28 static void f() 29 { 30 System.out.println("f()"); 31 } 32 33 public Test03() 34 { 35 System.out.println("Test03"); 36 } 37 }
执行1的结果如下:
Test02
static
Test01
nostatic
Test03
 
执行2的结果如下:
Test02
static
f()
 
执行3的结果如下:
Test02
static
3
 
结论如下:
1.创建对象时,需要对该对象所在的类进行初始化,初始化的顺序为:
    静态对象>静态代码块>一般对象>普通代码块>构造方法
 
2.当只是调用类的静态变量或静态方法时,此时只初始化静态行为,即:
    静态对象>静态代码块>静态变量(静态方法)

转载于:https://www.cnblogs.com/itpipi/p/4743253.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值