我很抱歉提出这样一个基本问题,但我只是不明白如何生成此输出。如果有人有时间回答我的愚蠢问题,将不胜感激。在此先感谢您。
这是代码
public class EchoTestDrive {
public static void main(String[] args) {
Echo e1= new Echo();
Echo e2= new Echo();
int x=0;
while(x < 4) {
e1.hello();
e1.count=e1.count +1;
if(x==3) {
e2.count=e2.count+1;
}
if(x>0) {
e2.count=e2.count+e1.count;
}
x=x+1;
}
System.outprintln(e2.count);
}
}
class Echo {
int count =0;
void hello() {
System.outprintln("helloo...");
}
}
这给出了输出:
helloo...
helloo...
helloo...
helloo...
10
现在得到24个而不是10个,我们声明Echo e2 = e1;而不是Echo e2 = new Echo;
我想知道这是如何生成此特定输出的。对于10来说,我可以逐个输入值并得到答案,但是当我使它们相等时会发生什么(我无法理解)。
最佳答案
当您创建e2 = e1
时,它使e1也指向同一对象。
因此,当e1
和e2
都在递增计数时,其计数将增加两次。
当您执行Echo e2 = new Echo()
和Echo e1 = new Echo()
时,e1和e2都指向两个不同的对象,因此增加e1的count
不会对e2.count
产生任何影响。
编辑:
我将添加一张图片来解释相同的内容。
关于java - 难以理解引用类型如何工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10388455/