Java一流的施工顺序

it2025-07-12  3

1.没有对象的构造

 

public class Test { public static int k = 0; public static int n = 99; public static int i = print("i"); static { print("静态块"); } { print("构造块"); } public int j = print("j"); public Test(String str) { System.out.println((++k) + ":" + str + " i=" + i + " n=" + n); ++i; ++n; } public static int print(String str) { System.out.println((++k) + ":" + str + " i=" + i +" n=" + n); ++n; return ++i; } public static void main(String[] strings) { } }

在载入类的时候构造静态变量和静态代码块。

顺序依照定义的顺序。

 

结果为:

1:i i=0 n=99 2:静态块 i=1 n=100

 

 

 

2.main函数中构造对象

 

public class Test { public static int k = 0; public static int n = 99; public static int i = print("i"); static { print("静态块"); } { print("构造块"); } public int j = print("j"); public Test(String str) { System.out.println((++k) + ":" + str + " i=" + i + " n=" + n); ++i; ++n; } public static int print(String str) { System.out.println((++k) + ":" + str + " i=" + i +" n=" + n); ++n; return ++i; } public static void main(String[] strings) { Test t = new Test("init"); } }

前两条同上。

在构造对象时,先构造对象里的非static变量,再调用构造函数。

非static类的变量按定义的顺序构造。

 

结果为:

1:i i=0 n=99 2:静态块 i=1 n=100 3:构造块 i=2 n=101 4:j i=3 n=102 5:init i=4 n=103

 

 

3.类中含static对象

 

public class Test { public static int k = 0; public static int n = 99; public static Test t1 = new Test("t1"); public static int i = print("i"); static { print("静态块"); } { print("构造块"); } public int j = print("j"); public static Test t2 = new Test("t2"); public Test(String str) { System.out.println((++k) + ":" + str + " i=" + i + " n=" + n); ++i; ++n; } public static int print(String str) { System.out.println((++k) + ":" + str + " i=" + i +" n=" + n); ++n; return ++i; } public static void main(String[] strings) { Test t = new Test("init"); } }

 

static类型变量、对象、代码块按定义的顺序构造。

构造static对象时候。由于是构造对象所以同2所述,先构造非static变量,在调用构造函数。

 

结果:

1:构造块 i=0 n=99 2:j i=1 n=100 3:t1 i=2 n=101 4:i i=3 n=102 5:静态块 i=4 n=103 6:构造块 i=5 n=104 7:j i=6 n=105 8:t2 i=7 n=106 9:构造块 i=8 n=107 10:j i=9 n=108 11:init i=10 n=109

 

 

4.static变量初始化

 

public class Test { public static int k = 0; public static Test t1 = new Test("t1"); public static int i = print("i"); public static int n = 99; static { print("静态块"); } { print("构造块"); } public int j = print("j"); public static Test t2 = new Test("t2"); public Test(String str) { System.out.println((++k) + ":" + str + " i=" + i + " n=" + n); ++i; ++n; } public static int print(String str) { System.out.println((++k) + ":" + str + " i=" + i +" n=" + n); ++n; return ++i; } public static void main(String[] strings) { Test t = new Test("init"); } }

 

 先默认初始化再进行赋值。

 

结果:

1:构造块 i=0 n=0 2:j i=1 n=1 3:t1 i=2 n=2 4:i i=3 n=3 5:静态块 i=4 n=99 6:积木 i=5 n=100 7:j i=6 n=101 8:t2 i=7 n=102 9:积木 i=8 n=103 10:j i=9 n=104 11:init i=10 n=105

 

 

 

转载于:https://www.cnblogs.com/bhlsheji/p/5036985.html

相关资源:数据结构—成绩单生成器
最新回复(0)