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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

person p = new person("zhangsan",20);这句话都做了什么?

9 个回复

倒序浏览
单看这句话,创建了对象:
    1、创建了两个对象:
              1)、一个person对象;
              2)、一个指向person对象的引用对象p;
    2、person类中肯定定义了一个带有参数的构造函数:
                 person(String,int){.........};
          当创建这个对象的时候,就会调用该构造函数,创建的person对象里的两个属性被赋值。

点评

哥们 你说错了吧 p是对象引用不是对象  发表于 2014-7-7 18:42
回复 使用道具 举报 1 0
这个视屏上有讲过的
* 1.因为new 用到了Person.class,所以会先找到Person.class文件并加载到内存中
* 2.如果有static代码块的话,会先执行静态代码块,给Person.class进行初始化
* 3.在堆内存中开辟空间,分配内存地址
* 4.在堆内存中建立对象的特有属性,并进行默认初始化
* 5.对对象特有属性进行显示初始化
* 6.对对象进行构造代码块初始化
* 7.对对象进行与之对应的构造函数初始化
* 8.将内存地址赋给栈内存中的p变量

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报
汤姆纳斯 来自手机 高级黑马 2014-7-7 11:57:12
板凳
好详细啊,学习了
回复 使用道具 举报
在内存中创建了一个person对象,person对象的姓名是“zhangsan”,年龄是20;
回复 使用道具 举报
调用Person的参数列表为(String, int)的构造函数初始化一个person的对象,并把对象的索引传给了P
回复 使用道具 举报

person p 建一个对象p
new person 新开辟一块内存空间
(“zhangsan”,20) 往p中传2个参数
回复 使用道具 举报
创建了p这个对象 , 并且调用了Person类中有参数的构造方法:public Person(String name,int age)
回复 使用道具 举报
分两种情况:
如果这句话写在方法体里面:
1.在内存堆区创建了一个姓名为zhangsan年龄为20的Person对象。
2.在内存栈区创建了一个引用变量p并把它指向1中创建的Person对象。
如果这句话写在方法体外(作为成员变量初始化的语句):
1.同第一种情况的1。
2.也是在内存堆区创建了一个引用变量p并把它指向1中创建的Person对象。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马