一、StringBuffer和StringBuilder 1.StringBuffer是什麼? 答:是一個字元串緩衝區,工作原理:預先在記憶體中申請一塊空間以容納字元序列,如果預留的空間,則進行自動擴容,以容納更多的字元序列。 2.StringBuffer\StringBuilder和String最大 ...
一、StringBuffer和StringBuilder
1.StringBuffer是什麼?
答:是一個字元串緩衝區,工作原理:預先在記憶體中申請一塊空間以容納字元序列,如果預留的空間,則進行自動擴容,以容納更多的字元序列。
2.StringBuffer\StringBuilder和String最大的區別
String是不可以變的字元序列,存儲字元串常量池中
StringBuffer底層是一個char數組,但是該char數組是可以變的,並且可以自動擴容
3.StringBuffer和StringBuilder的預設初始化容量是16
4.如何優化StringBuffer和StringBuilder
最好在創建StringBuffer之前,預測StringBuffer的存儲字元數量,然後再創建StringBuffer的時候採用指定初始化容量的方式創建StringBuffer,為了減少底層數組的拷貝,提高效率。
5.StringBuffer和StringBuilder的區別?
StringBuffer是線程安全的,即可以在多線程的環境中使用,是安全的。
StringBuilder是非線程安全的,即在多線程的環境中使用這個類可以會出現問題。
package com.bjpowernode.java_learning; public class D75_1_StringBufferAnalysis { public static void main(String [] args) { //創建字元串緩衝區對象 StringBuffer s1 = new StringBuffer();//16//這個類的參數裡面可以傳入整數,代表初始化多大的空間,如果不寫,預設就是16 //可以向StringBuffer中追加字元串 String[] ins = {"Physical","music","sleep","gourmet"}; //推薦字元串頻繁拼接使用StringBuffer和StringBuilder,不要使用String for(int i =0;i<ins.length;i++) { if(i==ins.length-1) { s1.append(ins[i]); }else { s1.append(ins[i]); s1.append(","); } } System.out.println(s1); } }
二、源碼:
D75_1_StringBufferAnalysis.java
https://github.com/ruigege66/Java/blob/master/D75_1_StringBufferAnalysis.java
2.CSDN:https://blog.csdn.net/weixin_44630050
3.博客園:https://www.cnblogs.com/ruigege0000/
4.歡迎關註微信公眾號:傅里葉變換,個人公眾號,僅用於學習交流,後臺回覆”禮包“,獲取大數據學習資料