栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java中的串联字符串是否总是导致在内存中创建新字符串?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java中的串联字符串是否总是导致在内存中创建新字符串?

我意识到第二种方法使用字符串连接,并将在内存中创建5个新字符串,这可能会导致性能下降。

不,不会。由于这些是字符串文字,因此将在编译时对其进行求值,并且 只会 创建 一个字符串
。这是在Java语言规范#3.10.5中定义的:

可以使用字符串连接运算符+
[…] 将长字符串文字始终分解成较短的片段并写为(可能带有括号)表达式,
而且,字符串文字始终始终引用String类的相同实例。

  • 由常量表达式(第15.28节)计算出的字符串在编译时进行计算,然后将其视为文字。
  • 在运行时通过串联计算的字符串是新创建的,因此是不同的。

测试:

public static void main(String[] args) throws Exception {    String longString = "This string is very long.";    String other = "This string" + " is " + "very long.";    System.out.println(longString == other); //prints true}

但是,下面的情况有所不同,因为它使用了一个变量-现在有一个串联并创建了多个字符串:

public static void main(String[] args) throws Exception {    String longString = "This string is very long.";    String is = " is ";    String other = "This string" + is + "very long.";    System.out.println(longString == other); //prints false}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/449640.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号