liulisha丶 2022-03-08 16:00 采纳率: 16.7%
浏览 25

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 .net领域新星创作者 2022-03-08 16:33
    关注

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

    评论

报告相同问题?

问题事件

  • 创建了问题 3月8日

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度