char[] a={'a','d','f','r'};
String s = new String(a,0,4);
System.out.println(s==s.intern());
String s1 = new String("hello");
System.out.println(s1==s1.intern());
出力:true false
jdk 1を用いる.8
推測:
s.intern()は、オブジェクトの参照をメソッド領域に加算する定数プールであり、2つの参照が同じオブジェクトを指す参照を返します.true s1.intern()は、このオブジェクトをメソッド領域の定数プールにコピーし、2つの参照が異なるオブジェクトを指す参照を返します.s1.intern()は定数プール内のオブジェクトを指し,s 1はスタック内のオブジェクトを指す.falseです. 可視stringの作成によって影響が異なります. 注意:
「java」と「Java」はmain関数が実行される前に定数プールで参照されます(推測は対応するオブジェクトでもあります). String s2 = new String(“jav”)+new String(“a1”); String s 3=new StringBuilder("Ja").append(“va2”).toString(); trueでもあります. JAVAにおけるintern()メソッドの詳細
何枚かの図でStringを簡単に理解できます.intern()
java定数プールの深入浅出