风车菊 2022-04-30 21:08 采纳率: 50%
浏览 34

Java字符串拼接问题

String s1 = "coder";     
String s2 = "coder";      
String s3 = "coder" + s2;  

**String s4 = "coder" + "coder";   
String s5 = s1 + s2; **

System.out.println(s3 == s4);  
System.out.println(s3 == s5);     
System.out.println(s4 == "codercoder");

按道理说 + 号底层使用了stringbuilfer 拼接字符串,最后tostring()创建了一个新的string对象,s4 s5 不都是应该指向堆内存吗,为啥指向了字符串对象了??

img

  • 写回答

2条回答 默认 最新

  • Bug 终结者 Java领域优质创作者 2022-04-30 21:45
    关注

    因为在常量池中有的话,会自动去常量池拿,而不会去新创建对象

    评论

报告相同问题?

问题事件

  • 创建了问题 4月30日

悬赏问题

  • ¥15 CIDR前缀长度该如何换算
  • ¥15 Java与Hbase相关问题
  • ¥20 bash代码推送不上去 git fetch origin master #失败了
  • ¥15 LOL外服加入了反作弊系统,现在游戏录像rofl文件离线都无法打开
  • ¥45 工程软件单片机设计课题要求
  • ¥15 在centos7安装conda
  • ¥15 c#调用yolo3 dll文件获取的数据对不上
  • ¥20 WPF 如何实现多语言,label 和cs(live Charts)中是否都能翻译
  • ¥15 STM32F103上电短路问题
  • ¥15 打开软件提示错误:failed to get wglChoosePixelFormatARB