字符串拼接+和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的原因。


相关文章
|
8月前
13 # 手写 concat 方法
13 # 手写 concat 方法
67 0
|
分布式计算 大数据 Spark
有类型转换_split_ | 学习笔记
快速学习有类型转换_split_
118 0
有类型转换_split_ | 学习笔记
|
8月前
|
Oracle Java 关系型数据库
Java【代码分享 06】Lamda表达式将List对象中的Map对象的key全部转化为大写或者小写(去除外层循环:可用于Map对象中的key全部转化为大写或者小写)
Java【代码分享 06】Lamda表达式将List对象中的Map对象的key全部转化为大写或者小写(去除外层循环:可用于Map对象中的key全部转化为大写或者小写)
371 0
es6扩展运算符、concat方法合并多个数组
es6扩展运算符、concat方法合并多个数组
59 0
|
SQL
LIKE与REGEXP的区别
LIKE与REGEXP的区别
620 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常用函数
|
前端开发
前端学习案例2-数组的拼接concat
前端学习案例2-数组的拼接concat
88 0
前端学习案例2-数组的拼接concat
sql字符处理函数concat()、concat_ws()
concat(“字符串1”,“字符串2”,…,“字符串n”)无分隔符拼接一个或多个字符串
153 0
sql字符处理函数concat()、concat_ws()
|
Python
Python函数str.split拆分字符串
Python函数str.split拆分字符串
139 0
字符串函数(一)之常见用法
计算字符串长度 但应注意 使用 string.h头文件 strlen函数返回值为 unsigned int
153 0