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

字符串串联分配有效吗?

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

字符串串联分配有效吗?

该特定示例将由编译器内联:

String a = "a";String b = "bb";String c = "ccc";String some = a + "t" + b + "t" + c;

Java
9+将使用带有makeConcatWithConstants的invokedynamic来内联此代码,以使其高效。根据

javap -v
输出:

Code:  stack=3, locals=5, args_size=1     0: ldc#2       // String a     2: astore_1     3: ldc#3       // String bb     5: astore_2     6: ldc#4       // String ccc     8: astore_3     9: aload_1    10: aload_2    11: aload_3    12: invokedynamic #5,  0   // InvokeDynamic #0:makeConcatWithConstants:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;    17: astore        4    19: return

但是,如果

a
b
and
c
是编译时间常数,则编译器将进一步优化代码:

final String a = "a";final String b = "bb";final String c = "ccc";String some = a + "t" + b + "t" + c;

并将

some
加载一个常量值:

Code:  stack=1, locals=5, args_size=1     0: ldc#2       // String a     2: astore_1     3: ldc#3       // String bb     5: astore_2     6: ldc#4       // String ccc     8: astore_3     9: ldc#5       // String atbbtccc    11: astore        4    13: return

在其他情况下,例如

for
循环,编译器可能无法生成优化的代码,因此
StringBuilder
可能会更快。



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

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

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