字串拼接+和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的原因。
相關文章
- MySQL拼接字串,GROUP_CONCAT 值得擁有MySql字串
- javascript push 和 concat 的區別JavaScript
- Js中concat和push的區別JS
- mysql資料庫concat拼接字串亂碼問題MySql資料庫字串
- js的字串拼接JS字串
- JavaScript 字串concat()JavaScript字串
- JavaScript 字串 concat()JavaScript字串
- JavaScript 字串拼接JavaScript字串
- [golang]字串拼接Golang字串
- 如何更高效的拼接字串?字串
- 字串拼接應用字串
- Python中的字串切割和拼接方法都有哪些?Python字串
- vue 標籤和屬性中 字串拼接方法Vue字串
- JS字串拼接優化JS字串優化
- C語言 - 字串拼接C語言字串
- JAVA中字串比較equals()和equalsIgnoreCase()的區別Java字串
- subprocess中命令為引數序列和字串的區別字串
- js拼接帶冒號:的字串的方法JS字串
- python怎麼拼接字串Python字串
- 字串拼接運算比較字串
- ABAP字串拼接保留空格字串
- Javascript之字串拼接詳解JavaScript字串
- javascript字串拼接效率測試JavaScript字串
- 字串大小的不同求法與區別字串
- js array陣列拼接 push() concat() 的方法效率對比,差10倍JS陣列
- Python 中字串拼接的 N 種方法Python字串
- Java 字串比較、拼接問題Java字串
- Go語言字串高效拼接(三)Go字串
- Go語言字串高效拼接(一)Go字串
- Go語言字串高效拼接(二)Go字串
- 字串拼接格式化輸出字串
- Java字串拼接寫法 joiner.onJava字串
- databinding字串拼接不支援中文字串
- 儲存過程中拼接字串儲存過程字串
- ../和./和/的區別
- Swift 4.0 字串擷取,拼接,字串富文字顯示Swift字串
- 和 的區別
- as 和 with的區別