理解できないこのコードがあります。最初は2つの同一の文字列を見ることができます。演算子を使用してそれらを比較すると、メソッド==
と同じようにtrueと表示されequals()
ますが、実行時に2つの同一の文字列を作成すると、演算子==はfalseと表示されます。なぜこうなった ?
同一の文字列をハードコーディングすると、メモリ内の同じ位置に配置され、両方の参照がそれを指すということですか? 同様の質問を見つけましたが、明確な回答はありませんでした。
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
}
}