滑小小稽 2019-07-06 14:58 采纳率: 0%
浏览 287

有关String内存分配问题

public static void main(String[] args) {

    String str = "Hello,World!";
    String s1 = "Hello,";
    String s2 = "World!";

    String s = "Hello," + "World!";

    String str2 = s1 + s2;

    System.out.println(str2 == str);
    System.out.println(s == str);
    System.out.println(str2 == s);
    System.out.println(s1 == "Hello,");
}

运行结果:
false 
true 
false
true

有人能解释下,s 与 str2 的内存分配情况吗?

  • 写回答

2条回答 默认 最新

  • threenewbee 2019-07-06 15:53
    关注

    str s1 s2 s 以及最后那个 "Hello," 都是常量,如果两个常量的字面值一样,在存储上实际上只有一份。
    而str2不是常量,是程序运行的时候计算出来的,所以它参与的比较都是false

    评论

报告相同问题?

悬赏问题

  • ¥50 如何增强飞上天的树莓派的热点信号强度,以使得笔记本可以在地面实现远程桌面连接
  • ¥15 MCNP里如何定义多个源?
  • ¥20 双层网络上信息-疾病传播
  • ¥50 paddlepaddle pinn
  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 请问这个是什么意思?
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services