国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > Java > 正文

java中拼接字符串的5種方法效率對比

2024-07-13 10:15:46
字體:
來源:轉載
供稿:網友

前言

最近寫一個東東,可能會考慮到字符串拼接,想了幾種方法,但對性能未知,所以下面就來測試下面,話不多說了,來一起看看詳細的介紹吧。

示例代碼

java;">public class Test {  List<String> list = new ArrayList<>();  @Before  public void init(){    IntStream.range(0, 100000).forEach((index) -> {      list.add("str" + index);    });  }  @org.junit.Test  public void test1() {    String ss = "";    long startTime = System.currentTimeMillis();    for (String s : list) {      ss += s;    }    System.out.println(System.currentTimeMillis() - startTime);  }  @org.junit.Test  public void test2() {    String ss = "";    long startTime = System.currentTimeMillis();    for (String s : list) {      ss=ss.concat(s);    }    System.out.println(System.currentTimeMillis() - startTime);  }  @org.junit.Test  public void test3() {    StringBuilder ss = new StringBuilder();    long startTime = System.currentTimeMillis();    for (String s : list) {      ss.append(s);    }    System.out.println(System.currentTimeMillis() - startTime);  }  @org.junit.Test  public void test4() {    long startTime = System.currentTimeMillis();    StringUtils.join(list);    System.out.println(System.currentTimeMillis() - startTime);  }  @org.junit.Test  public void test5() {    StringBuffer ss = new StringBuffer();    long startTime = System.currentTimeMillis();    for (String s : list) {      ss.append(s);    }    System.out.println(System.currentTimeMillis() - startTime);  }}

第一種:33809

第二種:8851

第三種:6

第四種:12

第五種:7

性能:StringBuilder>StringBuffer>StringUtils.join>concat>+

然后從源碼層面分析下

StringBuilder:

java,字符串拼接,效率,拼接字符串,字符串拼接效率

每次字符串拼接都只是擴展內部char數組,只生產一個最終的string,所以這種效率最高

StringBuffer:

java,字符串拼接,效率,拼接字符串,字符串拼接效率

與StringBuilder相比只是多加了個synchronized,所以在單線程的情況下相差不大

StringUtils.join:

java,字符串拼接,效率,拼接字符串,字符串拼接效率

java,字符串拼接,效率,拼接字符串,字符串拼接效率

可以看到其內部還是用StringBuilder實現,但是每次循環都多了個分隔符的判斷所以慢了一點,但是也不多,時間上來講是一個數量級的

concat:

java,字符串拼接,效率,拼接字符串,字符串拼接效率

可以看出每次連接都會生成一個string,所以效率很低

+:

因為是重載的運算符,找不到源碼,但是從結果來看效率最低

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VeVb武林網的支持。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 洛阳市| 永康市| 邮箱| 化隆| 甘孜县| 板桥市| 盘山县| 濮阳市| 石城县| 弋阳县| 方城县| 桓仁| 耒阳市| 克东县| 昆明市| 北川| 南陵县| 博罗县| 永济市| 和林格尔县| 南川市| 四子王旗| 上饶县| 淳化县| 万载县| 大理市| 嵊州市| 东山县| 蓝田县| 安丘市| 巫溪县| 江达县| 黄浦区| 厦门市| 晋中市| 高平市| 伊通| 石狮市| 呈贡县| 南丰县| 海口市|