字符串拼接+和concat的区别
来源:互联网 发布:linux system函数阻塞 编辑:程序博客网 时间:2024/05/24 02:39
+和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的原因。
推荐阅读
什么是Spring Boot?
Spring Boot开启的2种方式
Spring Boot Starters启动器
Spring Boot定制启动图案
Spring Boot核心配置
Spring Boot功能实战
Spring Boot自动配置原理、实战
Spring Boot Runner启动器
Spring Boot - Profile不同环境配置
看完有没有收获?分享到朋友圈给更多的人吧。
阅读全文
0 0
- 字符串拼接+和concat的区别
- mysql字符串拼接函数:concat和concat_ws
- concat拼接json字符串
- String 字符串拼接方法 concat和+ 效率比较
- MySQL 拼接字符串函数CONCAT
- mysql concat 字符串拼接命令
- mysql中拼接字符串concat
- VBA中字符串连接/字符串拼接中“&”和“+”的区别
- java语言基础(54)——变量字符串拼接和常量字符串拼接的区别
- mysql 中使用 concat 函数 拼接字符串
- 【SQL优化】字符串拼接concat与||
- Oracle 字符串拼接--concat/||
- sql 函数字符串拼接函数concat()
- StringBuilder String string.Concat 字符串拼接速度
- string拼接字符串stringbuider和stringbuffer的区别
- mybatis中#{}【占位符】和${}【字符串】拼接的区别
- concat和concat_ws()区别及MySQL的几个实用字符串函数
- concat和concat_ws()区别及MySQL的几个实用字符串函数
- 关于Java序列化你应该知道的一切
- fastjson 多级联属性过滤
- Lazy loading NSBundle MobileCoreServices.framework, Loaded MobileCoreServices.framework, System gr
- Java高级进阶:自定义ClassLoader
- hashCode和identityHashCode的区别你知道吗?
- 字符串拼接+和concat的区别
- 调用函数求二维数组中元素和,并统计数组中奇数的个数
- JDK8新特性之接口默认方法与静态方法
- JDK8新特性之Stream流
- JDK8新特性之函数式接口
- JDK8新特性之Lambda表达式
- JDK8新特性之Optional
- JDK8之新特性扩展篇
- spring boot 在进行权限管理时出现栈溢出