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

将字符串串联到StringBuilder Java中

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

将字符串串联到StringBuilder Java中

在您的示例中,固定文字比使用StringBuilder更有效。

固定文字将被编译器检测到并将被内联为单个值,因此这两行

String s = "one" + "two" + "three";

String s = "onetwothree";

将生成完全相同的字节码。

但是,如果串联不是通过文字而是通过函数调用完成的,则图片将有所不同。

当您需要动态追加字符串时,请使用StringBuilder而不是StringBuffer,因为它不同步,因此速度稍快。

这是示例字节码:

公共课测验{   private String s =“一个” +“两个” +“三个”;}公共课程Test2{   private String s2 =“ onetwothree”;}

这些类生成的字节码为:

c: Temp> javap -c测试从“ Test.java”编译公共类Test扩展了java.lang.Object {公共Test();  码:   0:加载_0   1:调用特殊#1; //方法java / lang / Object。“” :()V   4:aload_0   5:lcd#2;//字符串onetwothree   7:普特菲尔德#3;//字段s:Ljava / lang / String;   10:返回}c: Temp> javap -c Test2从“ Test2.java”编译公共类Test2扩展了java.lang.Object {公共Test2();  码:   0:加载_0   1:调用特殊#1; //方法java / lang / Object。“” :()V   4:aload_0   5:lcd#2;//字符串onetwothree   7:普特菲尔德#3;//字段s:Ljava / lang / String;   10:返回}

如您所见,两个变量的处理方式相同。

我认为这不属于语言规范,因为这“只是”编译器优化。

一个不同的编译器(我使用的是Sun编译器)可能在做完全不同的事情-只要行为不变就可以。



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

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

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