黑马程序员技术交流社区

标题: person p = new person("zhangsan",20);这句话都做了什么? [打印本页]

作者: 李宗玛    时间: 2014-7-7 10:22
标题: person p = new person("zhangsan",20);这句话都做了什么?
person p = new person("zhangsan",20);这句话都做了什么?
作者: blue_sky    时间: 2014-7-7 10:42
单看这句话,创建了对象:
    1、创建了两个对象:
              1)、一个person对象;
              2)、一个指向person对象的引用对象p;
    2、person类中肯定定义了一个带有参数的构造函数:
                 person(String,int){.........};
          当创建这个对象的时候,就会调用该构造函数,创建的person对象里的两个属性被赋值。
作者: 燿陚√揚葳    时间: 2014-7-7 11:24
这个视屏上有讲过的
* 1.因为new 用到了Person.class,所以会先找到Person.class文件并加载到内存中
* 2.如果有static代码块的话,会先执行静态代码块,给Person.class进行初始化
* 3.在堆内存中开辟空间,分配内存地址
* 4.在堆内存中建立对象的特有属性,并进行默认初始化
* 5.对对象特有属性进行显示初始化
* 6.对对象进行构造代码块初始化
* 7.对对象进行与之对应的构造函数初始化
* 8.将内存地址赋给栈内存中的p变量

作者: 汤姆纳斯    时间: 2014-7-7 11:57
好详细啊,学习了
作者: 张慈瑞    时间: 2014-7-7 18:42
在内存中创建了一个person对象,person对象的姓名是“zhangsan”,年龄是20;
作者: alexsoon    时间: 2014-7-7 19:39
调用Person的参数列表为(String, int)的构造函数初始化一个person的对象,并把对象的索引传给了P
作者: hhnog    时间: 2014-7-7 19:50

person p 建一个对象p
new person 新开辟一块内存空间
(“zhangsan”,20) 往p中传2个参数
作者: 玉冰竹    时间: 2014-7-7 23:45
创建了p这个对象 , 并且调用了Person类中有参数的构造方法:public Person(String name,int age)
作者: EarlyHeart    时间: 2014-7-7 23:55
分两种情况:
如果这句话写在方法体里面:
1.在内存堆区创建了一个姓名为zhangsan年龄为20的Person对象。
2.在内存栈区创建了一个引用变量p并把它指向1中创建的Person对象。
如果这句话写在方法体外(作为成员变量初始化的语句):
1.同第一种情况的1。
2.也是在内存堆区创建了一个引用变量p并把它指向1中创建的Person对象。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2