字符串拼接

字符串拼接

方式

  1. +,

  2. Join,

  3. StringBuffer,(线程安全, appent()方法使用了sychronized,线程安全)

  4. StringBuilder或String.concat(),线程不安全

效率

public static void main(String[] args) {
       //+
       long tick01 = System.currentTimeMillis();
       String tar = "";
       for (int i = 0; i < 1000000; i++) {
           tar += i;
      }
       long tick02 = System.currentTimeMillis();
       System.out.println(tar.length() + ", + cost: " + (tick02 - tick01) );

       //Join
       ArrayList<String> lst = new ArrayList<>();
       for (int i = 0; i < 1000000; i++) {
           lst.add(String.valueOf(i));
      }
       long tick11 = System.currentTimeMillis();
       String tar2 = String.join(",", lst);
       long tick12 = System.currentTimeMillis();
       System.out.println(tar2.length() + ", String.join cost: " + (tick12 - tick11) );

       //StringBuffer
       StringBuffer sb = new StringBuffer();
       long tick21 = System.currentTimeMillis();
       for (int i = 0; i < 1000000; i++) {
           sb.append(i);
      }
       String tar3 = sb.toString();
       long tick22 = System.currentTimeMillis();
       System.out.println(tar3.length() + ", StringBuffer cost: " + (tick22 - tick21) );

       //StringBuilder
       StringBuilder sbd = new StringBuilder();
       long tick31 = System.currentTimeMillis();
       for (int i = 0; i < 1000000; i++) {
           sbd.append(i);
      }
       String tar4 = sbd.toString();
       long tick32 = System.currentTimeMillis();
       System.out.println(tar4.length() + ", StringBuilder cost: " + (tick32 - tick31) );

  }

//结果
5888890, +  cost: 1029756
6888889, String.join cost: 33
5888890, StringBuffer cost: 22
5888890, StringBuilder cost: 22
  • StringBuilder 和 StringBuffer效率最高

  • 直接字符串拼接效率最低

结论

posted @ 2020-10-17 15:37  ylj-2021  阅读(152)  评论(0)    收藏  举报