1

2 つの文字列変数 と が与えられs1た場合、が真でありながらも真s2である可能性はありますか?(s1 != s2)(s1.equals(s2))

「h」と「H」が原因でifString s1 = "Hello"; と not が等しくないため、いいえと言いますが、オブジェクトとして比較すると、それらも同一ではないため、2番目の部分は真ではありません。String s2 = "hello";それは理にかなっていますか?

4

3 に答える 3

2

はい。それらが同一であるが同じ参照ではないことを確認してください(つまり、リテラルを介してインターンしたり、文字列プールを使用したりしないでください)。次に例を示します。

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.
于 2013-10-23T17:18:19.127 に答える
0
String s1 = new String("Hello");
String s2 = new String("Hello");

s1 == s2戻り値false

s1.equals(s2)戻り値true

したがって、これらの文字列はリテラルではないため、デフォルトでは共通プールメモリ内に保存/チェックされないため、可能です。

于 2013-10-23T17:18:40.983 に答える