String
特點
- String每次在改變的時候其實在內(nèi)存當中的實現(xiàn)方式是新建一片內(nèi)存來儲存新的字符串然后把內(nèi)存地址指向這個新的區(qū)域卿操。
- 在某些特別情況下籽御, String 對象的字符串拼接其實是被 JVM 解釋成了 StringBuffer 對象的拼接婉支,所以這些時候 String 對象的速度并不會比 StringBuffer 對象慢,而特別是以下的字符串對象生成中酵颁, String 效率是遠要比 StringBuffer 快的:
String S1 = “This is only a” + “ simple” + “ test”;
StringBuffer
特點
- 擅長增刪操作
- 線程安全
常見用法
- 賦值:
string s = "abc";
StringBuffer stringBuffer = "abc";//這是錯誤的
StringBuffer stringBuffer = new StringBUffer("abc");//新建一個Stringbuffer對象
StringBuffer string = new StringBuffer(s);//把string轉(zhuǎn)化成stringbuffer對象
- append方法:追加內(nèi)容到當前StringBuffer對象的末尾
- deleteCharAt方法:刪除指定位置的字符
- insert :插入
- reverse:將內(nèi)容反轉(zhuǎn)
- setCharAt:
存儲
StringBuffer append(基本數(shù)據(jù)類型); //將指定數(shù)據(jù)作為參數(shù)添加到已有數(shù)據(jù)結(jié)尾處.衙熔。StringBuffer insert(int index,基本數(shù)據(jù)類型); //可以將數(shù)據(jù)插入到指定index位置登颓。
刪除
StringBuffer delete(start,end):刪除緩沖區(qū)中的數(shù)據(jù),包含start红氯,不包含end框咙。StringBuffer deleteCharAt(index):刪除指定位置的字符。
獲取
char charAt(int index); int indexOf(String str); int lastIndexOf(String str);int length(); String substring(int start, int end);
修改
StringBuffer replace(int start,int end,String str);void setCharAt(int index, char ch);
反轉(zhuǎn)
StringBuffer reverse();
其他
//將緩沖區(qū)中指定數(shù)據(jù)存儲到指定字符數(shù)組中痢甘。void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) StringBuffer sb = new StringBuffer("abcedf");char[] chs = new char[4];sb.getChars(1,4,chs,1);
StringBuilder
特點
- 線程不安全喇嘱,他是設計出來在單線程當中替換stringBUffer的,她是StringBuffer的單線程等價類