开发者社区> 问答> 正文

Java字符串问题

为什么我声明: String s1 = "xxx"; String s2 = new String("xxx"); String s3 = "xxx";

System.out.print("" + (s1 == s2)); System.out.print("" + (s1 == s3)); 上面的显示false 下面的显示true 感觉一样啊。

展开
收起
YDYK 2020-04-05 23:12:44 798 0
1 条回答
写回答
取消 提交回答
  • 这和Java设计字符串的时候的设计有关,Java虚拟机为了提高效率并节约内存,对具有相同字符序列的字符串直接量使用同一个实例,这样的实例称为interned字符串。 所以对于Java来说,s1 s3 指定的是同一个interned字符串,而后者则是新建的对象。

    2020-04-05 23:15:36
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

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