曾家小浩 2016-02-17 07:29 采纳率: 0%
浏览 1655
已采纳

关于字符串常量池的问题

String s1="hello";
String s2="world";
String s3="helloworld";
System.out.println(s3.equals((s1+s2))); 

存在几个helloworld?
如果此时将helloworld赋值给变量s5 则赋值的是哪一个helloworld

  • 写回答

6条回答 默认 最新

  • 会飞的锅 2016-02-17 08:41
    关注

    字符串常量会存在常量池里,每定义一个字符串,都会先查看常量池,如果有,就直接使用已有的,没有才定义,所以从开始到结尾只有一个helloworld。
    为什么4楼的结果是false,因为比较的是c和d的地址。
    如果是System.out.println("helloworld"=="hello"+"world");则是true。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • chaichai11345 2016-02-17 07:36
    关注

    2个helloworld
    s3

    评论
  • bdmh 移动开发领域优质创作者 2016-02-17 07:50
    关注

    常量字符串在常量区,多个变量都会指向它,所以对于同一个字符串,常量区只有一个

    评论
  • qq_23660243 2016-02-17 08:22
    关注

    图片说明 不明白二楼说的 string字符串不属于常量吧 这里指向很明显是不同的

    评论
  • 韵馨forever 2016-02-17 08:36
    关注

    正如二楼所说,同样的字符串在常量区只有一个。那么回答楼主的问题:1,只存在一个“helloword”字符串,变量s3指向它,变量(s1+s2)的值也指向它。2,将”helloword“赋值给变量s5,变量s5也同样指向常量区已存在的“helloworld”字符串。

    评论
  • Exploring1024 2016-02-17 13:41
    关注

    这个是常见的面试题,你操作下看看

    评论
查看更多回答(5条)

报告相同问题?

悬赏问题

  • ¥60 PCDN如何使用宽带的电视业务通道拨号叠加带宽?
  • ¥15 遇到这种校园宽带网络应该怎么样解决?
  • ¥30 AXI VIP验证多余打印问题
  • ¥15 利用加权最小二乘法求某品牌手机价格指标,已按照总销量计算出权重,各类型号手机价格已知,如何求得价格指标?
  • ¥15 如何自制一个硬件钱包,有兴趣的朋友一起交流
  • ¥15 (关键词-聊天软件)
  • ¥15 求大家看看这个编程的编法没有思路啊
  • ¥20 WSL打开图形化程序子窗口无法点击
  • ¥15 Jupyter Notebook 数学公式不渲染
  • ¥20 ERR_CACHE_MISS 确认重新提交表单