国产探花免费观看_亚洲丰满少妇自慰呻吟_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教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 临沂市| 双牌县| 基隆市| 桑日县| 吉木萨尔县| 汪清县| 那坡县| 定兴县| 故城县| 宁陵县| 谢通门县| 威海市| 巢湖市| 盐源县| 英山县| 宝清县| 乌恰县| 舞阳县| 遂宁市| 三河市| 鄢陵县| 浑源县| 衡南县| 绥阳县| 泰顺县| 抚州市| 井冈山市| 吉首市| 东乌珠穆沁旗| 北辰区| 拉孜县| 丰城市| 尼玛县| 西华县| 抚远县| 盐山县| 三江| 安化县| 十堰市| 灌阳县| 剑河县|