黑马程序员技术交流社区
标题:
Java中类属性和对象属性初始化顺序小解
[打印本页]
作者:
FFF
时间:
2013-9-27 21:00
标题:
Java中类属性和对象属性初始化顺序小解
public class Temp09_27 {
static String a="String_a";
static String b;
String c="String_c";
String d;
static{
printStatic("before static");
b="Strint_b";
printStatic("after statuc");
}
public static void printStatic(String title)
{
System.out.println("-------"+title+"-------");
System.out.println("a=\""+a+"\"");
System.out.println("b=\""+b+"\"");
}
public Temp09_27()
{
print("before constructor");
d="String_d";
print("after constructor");
}
public void print(String title)
{
System.out.println("-------"+title+"-------");
System.out.println("a=\""+a+"\"");
System.out.println("b=\""+b+"\"");
System.out.println("c=\""+c+"\"");
System.out.println("d=\""+d+"\"");
}
public static void main(String[] args)
{
new Temp09_27();
}
}
复制代码
输出结果:
-------before static-------
a="String_a"
b="null"
-------after statuc-------
a="String_a"
b="Strint_b"
-------before constructor-------
a="String_a"
b="Strint_b"
c="String_c"
d="null"
-------after constructor-------
a="String_a"
b="Strint_b"
c="String_c"
d="String_d"
复制代码
由以上可知Java类属性和对象的初始化顺序为:
1.类属性(静态变量)定义时的初始化,如以上代码中的:statiic String a="String_a"。
2.static 块中的初始化代码,如以上的:static{}中的b="String_b"。
3.对象属性(非静态变量)定义时的初始化,如以上中的:String c="String_c"。
4.构造函数中的初始化代码,如以上构造函数中的:d="String_d"。
自学中总结到的一点规律,希望对同学们有帮助。
作者:
中山狼
时间:
2013-9-27 22:23
我记得毕老师的视频里的顺序要多一点,印象里应该是先执行方法区中的初始化,也就是静态代码块,之后才逐步执行堆内存中的(对象部分)的初始化
作者:
FFF
时间:
2013-9-27 23:22
中山狼 发表于 2013-9-27 22:23
我记得毕老师的视频里的顺序要多一点,印象里应该是先执行方法区中的初始化,也就是静态代码块,之后才逐步 ...
毕老师更深入。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2