DESKTOP-RLRCCPP_20200827-牛子良

问题

char [] chars={'a','b','c'};
String s=new String(chars);
s.intern();

String x="abc";
System.out.println(x==s);//true

String s=new String(chars); 在栈中保存s对应的地址,new在堆中开辟空间,保存char [] chars={'a','b','c'},s.intern()将堆中内容压入常量池。

String x="abc";首先检查检查"abc"对应的String实例是否存在于 【字符串池】 中,执行该语句时之前的操作已经将“abc”已经将abc压入了常量池直接返回字符串池中的地址。s和x保存的同一地址。所以最后的输出为true;如果把abc的哈希值输出,保存在一个数组,调用subSequence()方法,把其相应位置的值改变,那么System.out.println(x==y)是啥;

吐槽

教室下午太热了

标签

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