黑马程序员技术交流社区

标题: Person p = new Person("zhangsan",20);这句话做了什么,我有问题 [打印本页]

作者: 小黑子    时间: 2014-7-31 11:41
标题: Person p = new Person("zhangsan",20);这句话做了什么,我有问题
本帖最后由 小黑子 于 2014-8-3 17:11 编辑

程序代码和运行结果如图所示。
我的问题是:
1、第四步中的,“并进行默认初始化”,是不是就是将  name=null; age=0; ???
     如果确实是这样,那这个默认初始化是由谁来做的呢?(因为构造函数还没执行,所以应该不是构造函数,那又是谁来执行这个默认初始化的呢?)
2、第五步中的,“对属性进行显式初始化”,是不是就是将  name="haha"; ???
3、Person p = new Person("zhangsan",20);  这里的这个  p  是一个引用吗?  我觉得这与主义一个普通的  int a =1; 没什么区别啊,这个a可不是引用吧?
4、什么是引用?引用都包括哪些?
跪求大神解答~~~~
   

6_NewPerson()在内存中做了什么.png (142.69 KB, 下载次数: 27)

6_NewPerson()在内存中做了什么.png

作者: fantacyleo    时间: 2014-7-31 11:49
1. 默认初始化、构造代码块、显式初始化都是在构造函数中完成的。这个如果你用javap -c Person.class就明白了
2. Yes
3、4: 非引用类型,即基本类型,指:boolean char short byte int long double float这八种,除此之外都是引用类型。引用类型的特点是,引用变量(比如p)的值是它所引用的对象的地址值(比如Person p = new Person("d", 3),p的值是Person对象的内存地址)。而基本类型变量的值就是它所代表的对象的值(比如int a=3,那么a的值就是3)


作者: 小黑子    时间: 2014-7-31 12:52
fantacyleo 发表于 2014-7-31 11:49
1. 默认初始化、构造代码块、显式初始化都是在构造函数中完成的。这个如果你用javap -c Person.class就明白 ...

哦,是这个样子啊。谢谢啊。
敢问大神报了哪个黑马班?
作者: fantacyleo    时间: 2014-7-31 13:14
小黑子 发表于 2014-7-31 12:52
哦,是这个样子啊。谢谢啊。
敢问大神报了哪个黑马班?

自学中,还没报呢
作者: 小黑子    时间: 2014-7-31 16:23
fantacyleo 发表于 2014-7-31 13:14
自学中,还没报呢

亲,你的黑马毕都173了,你的技术分都43了,你这是自学多长时间 了?




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