黑马程序员技术交流社区
标题: 关于静态代码块和构造代码块执行顺序的例子 [打印本页]
作者: 位雪 时间: 2012-10-5 12:53
标题: 关于静态代码块和构造代码块执行顺序的例子
Person p = new Person("zhangsan",20);
该句话都做了什么事情?
1,因为new用到了Person.class.所以会先找到Person.class文件并加载到内存中。
2,执行该类中的static代码块,如果有的话,给Person.class类进行初始化。
3,在堆内存中开辟空间,分配内存地址。
4,在堆内存中建立对象的特有属性。并进行默认初始化。
5,对属性进行显示初始化。
6,对对象进行构造代码块初始化。
7,对对象进行对应的构造函数初始化。
8,将内存地址付给栈内存中的p变量
上面的内容理解了,静态代码块和构造代码块执行顺序就没问题了
作者: 陈虹旭 时间: 2012-10-5 14:28
没有看到你的例子哦 只看到对象的实例化过程了 估计看的同学会一头雾水 我来附上静态块和构造块执行顺序的例子吧:
class StaticCode
{
static
{
System.out.println("a");
}
{
System.out.println("c");
}
StaticCode(int x)
{
System.out.println("d");
}
}
主函数中的语句为:new StaticCode(4);
结果是多少:
##分析: 静态代码块随着类的加载而执行,所以最先执行
构造代码快随着构造函数的初始化而优先于构造函数执行,所以其次执行构造代码块
最后执行构造函数
所以此题答案为: a
c
d
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |