2 つの文字列変数 と が与えられs1
た場合、が真でありながらも真s2
である可能性はありますか?(s1 != s2)
(s1.equals(s2))
「h」と「H」が原因でifString s1 = "Hello";
と not が等しくないため、いいえと言いますが、オブジェクトとして比較すると、それらも同一ではないため、2番目の部分は真ではありません。String s2 = "hello";
それは理にかなっていますか?
はい。それらが同一であるが同じ参照ではないことを確認してください(つまり、リテラルを介してインターンしたり、文字列プールを使用したりしないでください)。次に例を示します。
String s1="teststring";
String s2 = new String("teststring");
System.out.println(s1 != s2); //prints true, different references
System.out.println(s1.equals(s2)); //true as well, identical content.
String s1 = new String("Hello");
String s2 = new String("Hello");
s1 == s2
戻り値false
s1.equals(s2)
戻り値true
したがって、これらの文字列はリテラルではないため、デフォルトでは共通プールメモリ内に保存/チェックされないため、可能です。