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

字符串级联: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);
    }}


幕布斯6054654
浏览 821回答 3
3回答

MMMHUHU

尼牙孜是正确的,但也值得注意的是,Java编译器可以将特殊+操作符转换为更有效的操作。Java有一个StringBuilder类,它表示一个非线程安全的可变字符串.当执行一串字符串连接时,Java编译器会默默地进行转换String a = b + c + d;进String a = new StringBuilder(b).append(c).append(d).toString();对于大型字符串来说,这样做的效率要高得多。据我所知,当您使用conat方法时不会发生这种情况。但是,当将空字符串连接到现有字符串时,CONAT方法更有效。在这种情况下,JVM不需要创建新的字符串对象,只需返回现有的字符串对象即可。看见CONAT文件来证实这一点。因此,如果您非常关心效率,那么在连接可能为空的字符串时,应该使用conat方法,并使用+否则。但是,性能差异应该可以忽略不计,您可能永远不应该担心这一点。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java