接着上一章节。
(4)显性初始化静态域
通过静态代码块来初始化某些属性域。
package com.ray.testobject;
public class Test {
private static int id;
private static String name;
static {
id = 0;
name = "abc";
System.out.println("id:" + id);
System.out.println("name:" + name);
}
public static int getId() {
return id;
}
public static void main(String[] args) {
// new Test();
System.out.println(Test.getId());
}
}
如果我们把new Test()放开,得到也是下面的结果。因为代码块只会执行一次。
输出:
id:0
name:abc
0
我们下面在给一个例子:
package com.ray.testobject;
public class Test {
private static int id = 0;
private static String name;
static {
System.out.println("id:" + id);
name = "abc";
System.out.println("name:" + name);
}
public Test() {
System.out.println("create Test");
}
public static void main(String[] args) {
new Test();
new Test();
}
}
输出:
id:0
name:abc
create Test
create Test
(5)初始化非静态域
package com.ray.testobject;
public class Test {
private String name;
{
name = "abc";
System.out.println("name:" + name);
}
public static void main(String[] args) {
new Test();
new Test();
}
}
输出:
name:abc
name:abc
初始化非静态域,每一次的new,代码块都会执行一次。
总结:这一章节主要讨论了显性初始化静态域,以及初始化非静态域。
这一章节就到这里,谢谢。
-----------------------------------