我有我無法理解的代碼。在開始時你可以看到兩個相同的字符串,並且當我使用運算符==
進行比較時,它說這是真的,與equals()
方法相同,但是當我在運行時運算符中創建兩個相同的字符串==表示爲false。這是爲什麼發生?Java:字符串不變性和運算符==
這是否意味着當我對相同的字符串進行硬編碼時,它們被放置在內存中的相同位置並且兩個引用指向它?我發現類似的question,但沒有明確的答案。
public class StringTesting {
public static void main(String[] args){
String string1 = "hello"; //\
// } same place in the memory ?
String string2 = "hello"; ///
System.out.println(string1 == string2); //true
System.out.println(string1.equals(string2)); //true
String string3 = "hey";
String string4 = "he";
System.out.println(string3 == string4); //false
System.out.println(string3.equals(string4)); //false
string4 += "y";
System.out.println(string3 == string4); //false ????
System.out.println(string3.equals(string4)); //true
System.out.println(string3 + " " + string4); //hey hey
}
}
如果你去到[這裏](http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java),你會找到你所有的答案。 –
您的粗體文本正在發生什麼 –
@RichardTingle Nice rep。儘管如此,我仍想毀掉它:P。 –