String共享池和Integer享元模式不再说了,参看:Integer应用了享元模式 JAVA --String类笔试面试题
这里看一下在数组中作为元素时,String和Integer是否还有这样的特点?
public static void main(String[] args) {
String[] a = new String[10];
a[0] = "a";
a[1] = "a";
System.out.println(a[0] == a[1]);//true
a[2] = new String("a");
a[3] = new String("a");
System.out.println(a[2]==a[3]);//false
System.out.println(a[2]==a[1]);//false
System.out.println(a[2].intern()==a[1]);//true
Integer[] i = new Integer[10];
i[0] = 97;
i[1] = 97;
System.out.println(i[0]==i[1]);//true
i[2] = 128;
i[3] = 128;
System.out.println(i[2]==i[3]);//false
System.out.println(i[4]);//null
}
由结果可以看出,数组容器中的String还是有常量池特点,Integer也还是有享元模式的特点的。