読者です 読者をやめる 読者になる 読者になる

String.intern()

Java


String s1 = "abc";
String s2 = new String("abc");

なんて記述していると
s1のインスタンスとs2のインスタンスは別物です。

そこで


String s1 = "abc";
String s2 = new String("abc").intern();

とすることで
s1のインスタンスとs2のインスタンスが同じものになります。

internが呼び出されると
JVM上で管理しているリテラル文字列と一致するかを見て、
1.存在しない場合、JVM上のリテラル文字列として保存し、参照を返却
2.存在する場合、JVM上のリテラル文字の参照を返却
するようです。

ただ、メモリ消費は抑えられますが、レスポンスが悪くなるかもしれないのであしからず。