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の場合:
この文字列定数プールを文字列定数プールに入れてみてください。
定数プールにある場合、配置されません。既存の定数プール内のオブジェクトのアドレスを返します。
そうでない場合は、オブジェクトの参照アドレスをコピーして定数プールに入れ、定数プールの参照アドレスを返します。