为了账号安全,请及时绑定邮箱和手机立即绑定

字符串级联:conat()vs“+”操作符

字符串级联:conat()vs“+”操作符

幕布斯6054654 2019-06-06 15:45:10
字符串级联:conat()vs“+”操作符假设字符串a和b:a += b a = a.concat(b)在引擎盖下,它们是一样的吗?这里是作为参考的CONAT分解。我希望能够将+操作符也能看到它的作用。public String concat(String s) {     int i = s.length();     if (i == 0) {         return this;     }     else {         char ac[] = new char[count + i];         getChars(0, count, ac, 0);         s.getChars(0, i, ac, count);         return new String(0, count + i, ac);     }}
查看完整描述

3 回答

?
MMMHUHU

TA贡献1834条经验 获得超8个赞

尼牙孜是正确的,但也值得注意的是,Java编译器可以将特殊+操作符转换为更有效的操作。Java有一个StringBuilder类,它表示一个非线程安全的可变字符串.当执行一串字符串连接时,Java编译器会默默地进行转换

String a = b + c + d;

String a = new StringBuilder(b).append(c).append(d).toString();

对于大型字符串来说,这样做的效率要高得多。据我所知,当您使用conat方法时不会发生这种情况。

但是,当将空字符串连接到现有字符串时,CONAT方法更有效。在这种情况下,JVM不需要创建新的字符串对象,只需返回现有的字符串对象即可。看见CONAT文件来证实这一点。

因此,如果您非常关心效率,那么在连接可能为空的字符串时,应该使用conat方法,并使用+否则。但是,性能差异应该可以忽略不计,您可能永远不应该担心这一点。


查看完整回答
反对 回复 2019-06-06
  • 3 回答
  • 0 关注
  • 819 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信