gpt4 book ai didi

java - 对象和字符串相等和内存图

转载 作者:搜寻专家 更新时间:2023-11-01 02:22:59 25 4
gpt4 key购买 nike

我有点难以理解这两者之间的区别:

假设我们有:

 String x = "Test";
String y = x;
y = "Not Test"; //x is not modified here

这两个步骤的内存图如下:

  1. x->“测试”
  2. x->“测试”<-y
  3. x->“测试” y->“不测试”

但是,考虑带有字段“int var”的 A 类:

A a = new A();
A b = a;
b.var = 5;

这里,如果我们修改b.var,a.var也会变成5。为什么这和上面的字符串不同呢?

此外,如果有人不介意解释这些字符串和对象的内存图,我将不胜感激。如果 a 和 b 是不同类的对象设置相等,结果会不同吗?谢谢。

最佳答案

有区别

b.var = 5;

b = new A();

第二个语句类似于您在第一个代码段中所做的,因为 y = "Not Test"; 使 y 引用一个新实例。

第一个语句更新了 ab 引用的实例的状态,因此两者都会受到影响。

这是显示您的第二个片段的图表:

a -> object of class A <- b
containing an int
variable `var`
var <- 5

a.varb.var 都包含 5,因为它们是相同的变量。

关于java - 对象和字符串相等和内存图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34309886/

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