JAVA為什么不建議在for循環中使用"+"進行字符串拼接,而是建議使用StringBuilder 的 append 方法?idea提示string concatenation ‘+=’in loop


以代碼來講解

String str="";
for(int i=0;i<10;i++){
	str+="a";
}
str=str+"a"+"b";

使用jad反編譯以后

jad使用指南

String str = "";
for(int i = 0; i < 10; i++)
	str = (new StringBuilder()).append(str).append("a").toString();
str = (new StringBuilder()).append(str).append("a").append("b").toString();

我們可以看到,反編譯后的代碼,在for循環中,每次都是new了一個StringBuilder,然后再把String轉成StringBuilder,再進行append。
而頻繁的新建對象當然要耗費很多時間了,不僅僅會耗費時間,頻繁的創建對象,還會造成內存資源的浪費。
我為什么在for循環外寫str=str+"a"+"b";,是為了告訴大家,不是一個”+“就創建一個StringBuilder

結論:

  1. 如果不是在循環體中進行字符串拼接的話,直接使用+就好了。
  2. 如果在並發場景中進行字符串拼接的話,要使用StringBuffer來代替StringBuilder。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM