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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 曹昌豪 中级黑马   /  2012-5-26 12:54  /  1439 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Person p = new Person();
这句话在内存中都做了什么??
列出供大家参考:
1,将Person.class加载进内存;
2,在堆内存中开辟空间;
3,把Person中的属性默认初始化;
4,把Person中的属性显示初始化;
5,调用构造代码块(没有则不执行)
6,调用构造函数初始化;
7,在栈内存中声明Person类型变量P,
8,把堆内存中的地址赋给P;

这儿的默认初始化可以理解,显示初始化是啥东东??

3 个回复

倒序浏览
默认初始化是为属性开辟内存空间,并赋于默认的值,各种变量、对象的默认值各不相同,比如布尔型是false,int类型是0....
如果定义的时候赋值了,比如,int i = 8;将 i 指向 8 就是显示初始化。
回复 使用道具 举报
默认初始化是虚拟机做的事情,和你没有关系
你在类中定义成员变量时,后面赋上的值就是显示初始化
class Person
{
      String name = "张三";
      int age = 20;
}
默认初始化的时候name的值是null,age是0
显示初始化时name就成了张三,age就成了20
希望这样能帮你理解
回复 使用道具 举报
最常用数据类型有:(不多举例)
int   
String
boolean
它们的默认初始化值分别是:0    null     false
当你给他另外赋值了,那么默认初始化值就被复写掉了
比方说:

未命名1.GIF (10.93 KB, 下载次数: 20)

未命名1.GIF
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马