开发者社区> 问答> 正文

在Java中,“”与构造函数创建字符串的区别

在Java中,“”与构造函数创建字符串的区别

展开
收起
huc_逆天 2021-01-08 16:37:38 687 0
1 条回答
写回答
取消 提交回答
  • 技术架构师 阿里云开发者社区技术专家博主 CSDN签约专栏技术博主 掘金签约技术博主 云安全联盟专家 众多开源代码库Commiter
    1. 这个问题可以使用这两个简单代码实例来回答:

      实例一

      String a = "abcd";
      String b = "abcd";
      System.out.println("a == b : "+(a == b)); // true
      System.out.println("a.equals(b) : "+(a.equals(b))); // true
      

      a== b等于true 是因为x和y指向方法区中同一个字符串常量,他们的引用是相同的(==比较的是引用)。

      当相同的字符串常量被多次创建时,只会保存字符串常量的一份副本,这称为“字符串驻留”。在Java中,所有编译时字符串常量都是驻留的。

      实例二

      String c = new String("abcd");
      String d = new String("abcd");
      System.out.println("c == d : "+(c == d)); // false
      System.out.println("c.equals(d) : "+(c.equals(d))); // true
      

      c== d等于false 是因为c和d指向堆中不同的对象。不同的对象拥有不同的内存引用

    2021-01-08 16:38:00
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载