久久婷婷香蕉热狠狠综合,精品无码国产自产拍在线观看蜜,寡妇房东在做爰3,中文字幕日本人妻久久久免费,国产成人精品三上悠亚久久

當前位置:首頁 > 學習資源 > 講師博文 > 為什么 idea 建議去掉 StringBuilder,使用“+”拼接字符串

為什么 idea 建議去掉 StringBuilder,使用“+”拼接字符串 時間:2024-01-16      來源:華清遠見

1.字符的普通拼接

 “+”號操作符必須是字符串拼接最常用的一種了,沒有之一。使用“+”拼接字符串,其實只是Java提供的一個語法糖。

 通過查看反編譯以后的代碼,我們可以發現,原來字符串常量在拼接過程中,是將String轉成了StringBuilder后,使用其append方法進行處理的。

 那么也就是說,Java中的“+”對字符串的拼接,其實現原理是使用StringBuilder.append()方法。

 普通的幾個字符串拼接成一個字符串,直接使用“+” 因為教材等原因,當前依舊有許多人拼接字符串時認為使用“+”耗性能,首選StringBuilder。實際上,從JDK5開始,Java編譯器就做了優化,使用“+”拼接字符串,編譯器編譯后實際就自動優化為使用StringBuilder。新建測試類StringTest,分別創建使用“+”拼接字符串和使用StringBuilder拼接字符串的方法;并新增Junit測試用例,分別調用拼接字符串100000次(這里不是循環拼接,而是執行多次拼接,因為一次拼接耗時太少,看不出差異),打印耗時。

2.字符串的循環拼接

 循環體內,字符串的連接方式,使用 StringBuilder 的 append 方法進行擴展。

 說明:下例中,反編譯出的字節碼文件顯示每次循環都會 new 出一個 StringBuilder 對象,然后進行 append 操作,最后通過 toString 方法返回 String 對象,造成內存資源浪費。

 

 循環拼接一個長字符串,建議使用StringBuilder,雖然“+”拼接字符串編譯后也會變成StringBuilder,但是每次循環處理都會new一個StringBuilder對象,耗時會大大增加。而直接使用StringBuilder,new一次就可以了,效率相對高。新增2個Junit測試用例,循環拼接10000次拼接一個字符串(次數少于上面的用例,因為拼接的是一個字符串,如果拼接次數太多,可能引發內存溢出):

3.總結

 關于String、StringBuilder、StringBuffer這三個類在字符串處理中的地位不言而喻,我們用的最多的就是String 的“+”號操作符(最普遍)以及StringBuilder、StringBuffer的append()方法。

 如果不是在循環體中進行字符串拼接的話,直接使用 String 的 “+” 就好了。

      單線程循環中操作大量字符串數據 → StringBuilder.append()

      多線程循環中操作大量字符串數據 → StringBuffer.append()

 其實拼接字符串的方式還有很多種,包括String.concat()、String.join("", str1, str2)、StringUtils.join(str1, str2) 等,但在我們日常開發中最常用的就是 String 的 “+” 和 StringXXX.append()方法啦,只要掌握好這三種方式的使用場景,就基本能保證代碼的高可用性了。好了,這篇文章就到這里,希望能夠對你有幫助!

上一篇:一文看懂決策樹

下一篇:“星閃NearLink:中國自主研發的短距離無線通信技術的創新與突破”

戳我查看嵌入式每月就業風云榜

點我了解華清遠見高校學霸學習秘籍

猜你關心企業是如何評價華清學員的

干貨分享
相關新聞
前臺專線:010-82525158 企業培訓洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2024 北京華清遠見科技發展有限公司 版權所有 ,京ICP備16055225號-5京公海網安備11010802025203號

回到頂部