gpt4 book ai didi

java - 很难理解引用类型的工作原理

转载 作者:行者123 更新时间:2023-12-03 23:14:44 25 4
gpt4 key购买 nike

我很抱歉问了这样一个基本问题,但我无法理解这个输出是如何生成的。如果有人有时间回答我的愚蠢问题,我们将不胜感激。提前致谢。

这是代码

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 也指向同一个对象。

因此 e1e2 都递增计数,计数递增两次。

当你执行 Echo e2 = new Echo()Echo e1 = new Echo() 时,e1 和 e2 都指向两个不同的对象,因此递增 count of e1 不会对 e2.count 产生任何影响。

编辑:

我将添加一张图片来解释相同的内容。

enter image description here

关于java - 很难理解引用类型的工作原理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10388455/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com