まず、SOとGoogleの両方でこれについて検索しました。これがどこかの何かの複製であると言うなら、その何かは本当に到達するのが難しいです。
ええと...文字列はオブジェクトであり、equalsを使用して比較する必要があることはわかっていますよね?
次に、次のことを説明してください。
String s1 = new String("string");
String s2 = new String("string");
String s3 = "string";
System.out.println(s1.equals(s2)); // true
System.out.println(s1 == s2); // false
System.out.println(s1 == "string"); // false
System.out.println(s2 == "string"); // false
System.out.println(s3 == "string"); // true
出力に関して== "string"
、なぜ最後の1つだけが「true」を出力するのですか?
それらが作成されたとき、それらはすべて文字列ではありませんか?今、私の3番目のストリングは醜いアヒルの子ですか?...さらに悪いことに、私が外国の文字列を使用している場合...それは私が思っている文字列ではないかもしれませんか?!(s3はそのString
前にあり、プリミティブではないことに注意してください。)
...s3にはオブジェクトが含まれていると確信しています。
言い換えると、次のように文字列を宣言することの違いは何ですか?
String s1 = new String("string");
そしてこのような別のもの:
String s3 = "string";
?