A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 深井看海 中级黑马   /  2012-12-2 22:41  /  978 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Person p = new Person(“zhangsan”,20);
这句话都做了什么事情?
1). 因为new用到了Person .class,所以会先找到Person .class文件并加载到内存中
2). 执行该类中的static代码块,如果有的话,给Person .class类进行初始化
3). 在堆内存中开辟空间,分配内存地址
4). 在堆内存中建立对象的特有属性,并进行默认初始化
5). 对属性进行显示初始化
6). 对对象进行构造代码块初始化
7). 对对象进行对应的构造函数初始化
8). 将内存地址赋给栈内存中的p变量
静态代码块给类初始化的> 构造代码块给对象初始化的>构造函数给对应对象初始化的
静态代码块执行一次,构造代码块每次调用构造方法的时候都会执行。
他们的执行顺序是:静态代码块 -- 构造代码块 -- 构造方法
静态代码块特点:随着类的加载而执行,只执行一次,并优先于主函数,用于给类进行初始化

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马