字符串的拼接操作


在Java中,字符串的拼接有多種操作,目前我常用是兩種:

  • + 運算符
  • StringBuilder

  目前在學習的過程中,首先被提到的就是在字符串的拼接操作中,不可以針對大量的字符串改動操作使用“+”來運行,而是應該使用StringBuilder類中的方法,那么這是為什么呢?

  

 1 public class ArrTest {
 2     public static void main(String[] args) {
 3         String string = "";
 4         long begin1 = System.currentTimeMillis();
 5         for(int i = 0; i<100000; i++) {
 6             string += 1;
 7         }
 8         long end1 = System.currentTimeMillis();
 9         
10         StringBuilder sb = new StringBuilder();
11         long begin2 = System.currentTimeMillis();
12         for(int i = 0; i<100000; i++) {
13             sb.append(1);
14         }
15         long end2 = System.currentTimeMillis();
16         
17         
18         System.out.println("String的運行時間是"+(end1-begin1));
19         System.out.println("StringBuilder的運行時間是"+(end2-begin2));
20     }
21 }

以上代碼是一個簡單的測試代碼,測試得知,在相同條件下,小規模的改動對於二者來說運行時間並無區別,

但是一旦涉及的改動操作容量較大時,那么String類的 + 運算的運行時間就會大大減緩,而對於StringBuilder來說,運行時間相較String的+運算來說,變化微乎其微

  通過查詢底層發現,Java使用 + 進行字符串拼接操作時,底層實現依然還是使用的 StringBuilder 進行實現,每進行一次拼接操作就會創建一個新的 StringBuilder 對象

這樣進行操作的話,是會帶來很大的性能損耗,因此在少量操作時運行時間的改變不明顯,一旦涉及到大量改動操作,那么運行時間就會肉眼可見的減慢

  而通過查詢StringBuilder的底層發現,StringBuilder的append操作不涉及StringBuilder對象的創建,在拼接時只涉及到自身,因此效率較高

 

在進行字符串拼接時需要注意,字符串本身並不可變,我們可以通過新建字符串然后以重新指向的方式拼接字符串


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM