我是 Java 新手,我对对象分配有一些疑问。例如,
Test t1 = new Test();
Test t2 = t1;
t1.i=1;
假设变量i
是在 Test 类中定义的,我是否正确假设 t1 和 t2 都指向同一个对象,其中修改t1.i=1
会影响t1
和t2
?实际上我测试了它,似乎我是对的。但是,当我在 上尝试相同的操作时String
,修改仅发生在另一侧不受影响的一侧。这背后的原因是什么?
编辑:我尝试使用 String 的情况。
String s1 = "0";
String s2 = s1;
s1 = "1";
System.out.println(s1);
System.out.println(s2);
我通过在 String 上测试案例来意识到我的错误,因为它是不可变的。我认为s1="1"
修改字符串的情况实际上是将“1”的引用返回给s1。尽管如此,我的问题仍然存在。是否Test t2 = t1;
导致 t2 和 t1 都指向同一个对象,或者现在每个都有自己的对象?这种情况是否适用于 Java 上的所有对象?