【发布时间】:2012-06-16 05:23:20
【问题描述】:
我是 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 上的所有对象?
【问题讨论】:
-
“在字符串上尝试相同的东西”是什么意思? String 对象中没有修改字符串本身的方法。请仔细阅读文档。
-
如果您在 String 上发布您正在执行的测试代码,我们可以更具体地说明您做错了什么
标签: java object pass-by-reference variable-assignment