liulisha丶 2022-03-08 16:00 采纳率: 22.2%
浏览 27

StringBuilder intern 问题


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

  • 写回答

3条回答 默认 最新

  • Admini$trat0r 新星创作者: 后端开发技术领域 2022-03-08 16:33
    关注

    首先看intern的定义:如果字符串常量池里存在一个和当前字符串对象等价的字符串对象(equals==true认为相同),那么返回字符串常量池里那个对象.如果不存在,把当前字符串对象存进常量池, 返回当前字符串对象.
    再看==这里是指地址相同才为true
    这里不难理解,stringbuilder在进行append操作时在转字符串会生成一个字符串常量在内存

    评论

报告相同问题?

问题事件

  • 创建了问题 3月8日