String str = new StringBuilder("lisi").toString(); System.out.println(str == str.intern()); String str2 = new StringBuilder("zhang").append("san").toString(); System.out.println(str2 == str2.intern());
为什么会一个false 一个true
收起
首先看intern的定义:如果字符串常量池里存在一个和当前字符串对象等价的字符串对象(equals==true认为相同),那么返回字符串常量池里那个对象.如果不存在,把当前字符串对象存进常量池, 返回当前字符串对象.再看==这里是指地址相同才为true这里不难理解,stringbuilder在进行append操作时在转字符串会生成一个字符串常量在内存
报告相同问题?