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手残.......

标签

© 2021 成都云创动力科技有限公司 蜀ICP备20006351号-1