字符串的拼接操作

在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对象的创建,在拼接时只涉及到自身,因此效率较高

 

在进行字符串拼接时需要注意,字符串本身并不可变,我们可以通过新建字符串然后以重新指向的方式拼接字符串

上一篇:Java-Java中字符串相加


下一篇:java,判断手机设备跟adb建立连接