我有这个我无法理解的代码。一开始你可以看到两个相同的字符串,当我将它们与操作符的使用进行比较时,==
它说它是真的,与equals()
方法相同,但是当我在运行时创建两个相同的字符串时,操作符 == 说是假的。为什么会这样?
这是否意味着当我对相同的字符串进行硬编码时,它们被放置在内存中的相同位置并且两个引用都指向它?我发现了类似的问题,但没有明确的答案。
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
}
}