字符串拼接+和concat的区别

简介: +和concat都可以用来拼接字符串,但在使用上有什么区别呢,先来看看这个例子。

+和concat都可以用来拼接字符串,但在使用上有什么区别呢,先来看看这个例子。

public static void main(String[] args) {
    // example1
    String str1 = "s1";
    System.out.println(str1 + 100);//s1100
    System.out.println(100 + str1);//100s1
    String str2 = "s2";
    str2 = str2.concat("a").concat("bc");
    System.out.println(str2);//s2abc
    // example2
    String str3 = "s3";
    System.out.println(str3 + null);//s3null
    System.out.println(null + str3);//nulls3
    String str4 = null;
    System.out.println(str4.concat("a"));//NullPointerException
    System.out.println("a".concat(str4));//NullPointerException
}

concat源码:

public String concat(String str) {
    int otherLen = str.length();
    if (otherLen == 0) {
        return this;
    }
    int len = value.length;
    char buf[] = Arrays.copyOf(value, len + otherLen);
    str.getChars(buf, len);
    return new String(buf, true);
}

看下生成的字节码:


所以可以得出以下结论:

+可以是字符串或者数字及其他基本类型数据,而concat只能接收字符串。


+左右可以为null,concat为会空指针。


如果拼接空字符串,concat会稍快,在速度上两者可以忽略不计,如果拼接更多字符串建议用StringBuilder。


从字节码来看+号编译后就是使用了StringBuiler来拼接,所以一行+++的语句就会创建一个StringBuilder,多条+++语句就会创建多个,所以为什么建议用StringBuilder的原因。


相关文章
|
SQL
LIKE与REGEXP的区别
LIKE与REGEXP的区别
532 0
|
SQL Oracle 关系型数据库
【SQL开发实战技巧】系列(十一):拿几个案例讲讲translate|regexp_replace|listagg|wmsys.wm_concat|substr|regexp_substr常用函数
translate|regexp_replace|listagg|wmsys.wm_concat|substr|regexp_substr常用函数。如何使用translate或regexp_replace提取姓名的大写首字母缩写、如何使用translate或regexp_replace按字符串中的数值排序、如何聚合表中的行创建一个以逗号分隔拼接的字符串(函数LISTAGG、wmsys.wm_concat)、如何使用substr或regexp_substr提取第N个分隔符的子串、如何分解IP地址
【SQL开发实战技巧】系列(十一):拿几个案例讲讲translate|regexp_replace|listagg|wmsys.wm_concat|substr|regexp_substr常用函数
sql字符处理函数concat()、concat_ws()
concat(“字符串1”,“字符串2”,…,“字符串n”)无分隔符拼接一个或多个字符串
143 0
sql字符处理函数concat()、concat_ws()
|
人工智能 C#
C# 字符串拼接
除了可以通过加号来拼接字符串之外,我们还可以使用格式化字符串的方法来拼接字符串。中,字符串没有相加的数学运算,但它可以通过加号。是唯一可以用于字符串运算的算数运算符,别的。这样也可以实现字符串的拼接。也可以和复合赋值运算符。
137 0
C# 字符串拼接
|
Python
Python函数str.split拆分字符串
Python函数str.split拆分字符串
125 0
|
缓存 安全 Java
拼接字符串,还能这么玩
大家好,我是指北君。
拼接字符串,还能这么玩