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

Java字符串串联:concat()与“ +”operator

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

Java字符串串联:concat()与“ +”operator

首先,语义上略有不同。如果a是

null
,则
a.concat(b)
抛出一个
NullPointerException
,但
a+=b
将把原来的值a就好像它是null。此外,该
concat()
方法仅接受
String
值,而+操作员会将参数无提示地转换为
String
(使用
toString()
对象的方法)。因此,该
concat()
方法在接受方面更加严格。

要深入了解,请写一个简单的类

a += b
;

public class Concat {    String cat(String a, String b) {        a += b;        return a;    }}

现在与一起拆卸

javap -c
(包括在Sun JDK中)。你应该会看到一个列表,其中包括:

java.lang.String cat(java.lang.String, java.lang.String);  Code:   0:   new     #2; //class java/lang/StringBuilder   3:   dup   4:   invokespecial   #3; //Method java/lang/StringBuilder."<init>":()V   7:   aload_1   8:   invokevirtual   #4; //Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;   11:  aload_2   12:  invokevirtual   #4; //Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;   15:  invokevirtual   #5; //Method java/lang/StringBuilder.toString:()Ljava/lang/    String;   18:  astore_1   19:  aload_1   20:  areturn

所以,

a += b
相当于

a = new StringBuilder()    .append(a)    .append(b)    .toString();

concat
方法应该更快。但是,使用更多的字符串
StringBuilder
,至少在性能方面,该方法是成功的。

Stringand
的源代码
StringBuilder
(及其包专用基类)在Sun JDK的
src.zip
中可用。你会看到正在建立一个char数组(根据需要调整大小),然后在创建
final
时将其丢弃
String
。实际上,内存分配出奇的快。



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

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

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