创建对象之间有什么区别,例如在我的代码中,使用运算符“ new”键入Obj和对象类型为String?
public class Objs {
int a;
public Objs(int a)
{
this.a = a;
}
public static void main(String[] args)
{
String str = new String("Hello");
String str1 = str; // (str1 == str) == true
str += ", world!!"; // after this (str1 == str) == false - Why?
Objs o = new Objs(4);
Objs o1 = o; //(o == o1) == true
o.a += 9; // after this (o == o1) == true also
}
}
为什么在更改“ str”的值后,引用“ str”和“ str1”变得不相等,但是如果我对类Obj进行相同的引用,则引用保持相等?
答案 0 :(得分:0)
因为Java中的String
类型是不可变的,这意味着不能修改字符串对象,而是使用给定的表达式创建一个新的字符串对象。
str += ", world!!";
//在这一行,使用给定的连接创建了一个新的str
对象,因此str失去了对先前对象的引用,现在指向了新对象-这就是原因。