有人问我为什么String是不可变的
我这样回答:
当我们在Java中像这样创建一个字符串时,String s1="hello";将在字符串pool(hello)中创建一个对象,并且s1将指向hello。现在再次执行该操作String s2="hello";将不会创建另一个对象,但是s2将指向该对象,hello 因为JVM将首先检查如果在字符串池中是否存在相同的对象, 如果不存在则仅创建一个新对象。
String s1="hello"
String s2="hello"
现在,如果假设Java允许串可变那么如果我们改变S1到hello world那么S2价值也将hello world因此Java字符串是不可改变的。
hello world
有谁能告诉我我的答案是对还是错?
String 是不可变的,原因有以下几点:
String
a =“ test”
b =“ test”
a
b
在你的示例中,如果String是可变的,请考虑以下示例:
String a="stack"; System.out.println(a);//prints stack a.setValue("overflow"); System.out.println(a);//if mutable it would print overflow