String#intern()によると、intern
メソッドは、文字列が文字列プールにある場合、文字列プールから文字列を返すことになっています。そうでない場合、新しい文字列オブジェクトが文字列プールに追加され、この文字列の参照が返されます。
だから私はこれを試しました:
String s1 = "Rakesh";
String s2 = "Rakesh";
String s3 = "Rakesh".intern();
if ( s1 == s2 ){
System.out.println("s1 and s2 are same"); // 1.
}
if ( s1 == s3 ){
System.out.println("s1 and s3 are same" ); // 2.
}
s1 and s3 are same
s3がインターンされたときに印刷され、s1 and s2 are same
印刷されないことを期待していました。しかし、結果は次のとおりです。両方の行が印刷されます。つまり、デフォルトでは文字列定数がインターンされます。それがそうであるなら、なぜ我々は必要なのですintern
方法を?つまり、このメソッドをいつ使用すればよいのでしょうか。
intern
パブリックメソッドを使用するのでしょうか。intern
プライベートメソッドを使用して、誰もアクセスできないようにするべきではありません。または、この方法の目的はありますか?