DESKTOP-O1UAITJ_20200827-史鹏华
一,问题
1.1 字符串对象s通过s.intern()方法把字符串对象s放在方法区 中的字符串池中,当执行到String x="abc";这句语句时检查字符串 池是否已经存在这个对象,如果存在这个对象的话就把地址赋值给 它,由System.out.println(x==s);//true 可以知道变量s和x里存的地址相等即所指对象相同,为什么char[] data数组会和字符串"abc"相同(这点搞不懂)
public static void main(String[] args) {
char[] data = {'a','b','c'};
String s = new String(data);
System.out.println(System.identityHashCode(s));
s.intern();//把字符串对象放在字符串池中
String x="abc";
System.out.println(System.identityHashCode(x));
System.out.println(x==s);//true
}
#### 解决
###### 通过执行s.intern();将字符串对象s放入字符串池中,将数组的地址给value,当执行String x="abc";语句是检查发现实例已存在,于是将s的地址传给了x,因此System.out.println(x==s);//true 输出结果为true。
二,吐槽
#### 老把Array写成Array手残.......
点赞