なぜString.toLowerCase()によって返された文字列が抑留されていませんか?

mounaim:

私は、このコードの出力を予測するように頼まれました。

String party1 = "party";
String party2= "PARTY".toLowerCase();
if(party1==party2){
   System.out.println("EQUAL");
}else{
   System.out.println("NOT EQUAL");
}

私は結果と思っtoLowerCase()自動的に抑留されますので、同じ参照するparty1ときに返されることになるが、私は、コードouptuts以来、間違っていた「NOT EQUAL」を同様に)新しいを返しますか
toLowerCase()toUpperCase()String

編集:私は文字列を比較するために==使用していない、私はちょうどtoLowerCaseメソッド()メソッドの動作について知りたいです

アンドリューTobilko:

任意の文字列操作の結果が内在化された場合は、プールが非常に不必要に急速に成長していることになります。春上の任意の中間のアクションは、プール内に新しい要素をもたらすであろう。それは非常に特定のドメイン内の例ごく少数のために有益であろう。したがって、デフォルトのポリシーではありませんし、理由ですintern()が存在します。

String party1 = "party";
String party2 = "PARTY".toLowerCase().intern();
System.out.println(party1 == party2 ? "EQUAL" : "NOT EQUAL");

何も特別ながありますtoLowerCase():任意のStringメソッドは、新しいを返しますStringので、StringSは不変です。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=314713&siteId=1