作者回复:
phone xiaomi = new phone();
zhuban zhuban1 = new zhuban();
然后你应该让xiaomi对象的zhuban这个引用指向你新创建出来的对象, 也就是下面这一句:
xiaomi.zhuban = zhuban1
P.S. 类名建议按照习惯, 使用首字母大写.
作者回复: Storage创建出来了,就像一个本子,挂在公告板上。这个Storage对象里面有三个纸片,分别是存储一个capacity的值,和两个String对象的地址。但是这两个存储String对象地址的纸片上,是空的,没有指向任何实际的String对象。
作者回复: Java中除了string对象,所有对象都是new操作符创建出来的。storage对象里只有引用,创建出来时引用没有指向任何对象。
作者回复: 1)对
2)对
你理解的很对,比起我当年理解的快多了,赞👍
其实这俩问题都和对象创建以及引用指向对象有关。
1)里面,四个引用分别是代码创建了两个,用来指向对象(指向公告板上的小本子),创建每个对象时,又分别创建了一个,是对象内部的成员变量。
2)也是一样,情况1只有一个本子(对象),改变price都是在操作同一个本子(对象)的同一张纸(成员变量),情况2是两个本子(对象),每个本子(对象)都有price。
作者回复: 成员变量的引用类型会被初始化为null,局部变量(方法里创建的变量)不会被初始化,没有初始化就使用的话会有编译错误
作者回复:
准确来说,是用string对象的引用的值,给一个string类型的引用赋值。
如果是如下这种,是不会创建string对象的:
String a2 = a1;
其中a1是另一个string类型的引用。
如下这种,会创建一个String对象:
String a1 = “abc”;
但这个和赋值没有必然关系。过程是先创建一个内容为“abc”的String对象,然后将这个对象的引用作为值,赋值给a1这个String类型的引用。