文字列拡張:intern()メソッド

String s1 = new String("1") + new String("1");//s1变量记录的地址为:new String
s1.intern();//在字符串常量池中生成"11"。如何理解:jdk6:创建了一个新的对象"11",也就有新的地址;jdk7:此时常量池中并没有创建"11",而是创建了一个指向堆空间中new String("11")的地址;
String s2 = "11";
System.out.println(s1 == s2);//jdk6:false;jdk7:true

Stringでのintern()メソッドの使用を要約します。

jdk6の場合:

この文字列定数プールを文字列定数プールに入れてみてください。

定数プールにある場合、メソッドはありません。既存の定数プール内のオブジェクトのアドレスを返します。

そうでない場合は、このオブジェクトのコピーを作成して文字列プールに入れ、文字列プール内のオブジェクトアドレスを返します。

jdk7の場合:

この文字列定数プールを文字列定数プールに入れてみてください。

定数プールにある場合、配置されません。既存の定数プール内のオブジェクトのアドレスを返します。

そうでない場合は、オブジェクトの参照アドレスをコピーして定数プールに入れ、定数プールの参照アドレスを返します。

おすすめ

転載: blog.csdn.net/guorui_java/article/details/109787051