StringBuffer的認識及與陣列、String的區別
StringBuffer
在開始時,首先看看String和stringbuffer的區別?
String是一個不可變的字元序列,而stringbuffer是一個可變的字元序列。
記憶體方面:String是在常量區開闢空間,比較耗費記憶體,而stringbuffer是一個字串緩衝區,當字串的大小沒有超過緩衝區的容量時,可以呼叫之前的字串,不用開闢新的空間
Stringbuffer:提供的是字串緩衝區,是屬於java.lang包裡的,被final修飾
Stringbuffer的構造方法:
StringBuffer():無參構造的格式,初始化容量為16
StringBuffer(int capacity):指定容量構造一個字串緩衝區
StringBuffer(String str):構造一個字串緩衝區,並將其內容初始化為指定的容量。
構造一個StringBuffer緩衝區的一般格式為:
StringBuffer sb=new StringBuffer();
例如:
package TextDome; /*StringBuffer():無參構造的格式,初始化容量為16 StringBuffer(int capacity):指定容量構造一個字串緩衝區 StringBuffer(String str):構造一個字串緩衝區,並將其內容初始化為指定的容量。*/ public class StringBufferDome { public static void main(String[] args) { StringBuffer s=new StringBuffer(); System.out.println("s:"+s); System.out.println("length():"+s.length()); System.out.println("capacity():"+s.capacity()); System.out.println("------------------"); StringBuffer s1=new StringBuffer(73); System.out.println("length():"+s1.length()); System.out.println("capacity():"+s1.capacity()); System.out.println("-------------------"); StringBuffer s2=new StringBuffer("baby"); System.out.println("length():"+s2.length()); System.out.println("capacity():"+s2.capacity());//這裡是緩衝區初始化容量16與字串的長度之和 } } 執行結果: /** * @param args * s: * length():0 * capacity():16 * ------------- * length():0 * capacity():73 * ------------- * length():4 * capacity():20 */
StringBuffer的功能:
1)新增功能:
(它在實際開發中使用最多)Public StringBuffer append(任何資料型別...),在末尾新增,並且返回到字串緩衝區本身
Public StringBuffer insert(int offset,String str):將str字串新增到指定的位置,返回的也是字串緩衝區本身
例如:
package TextDome; public class StringBufferDome01 { public static void main(String[] args) { StringBuffer sb=new StringBuffer(); sb.append("hello"); sb.append('A'); sb.append(1996); System.out.println("sb:"+sb); System.out.println("---------------"); sb.insert(5, "迪麗熱巴"); System.out.println("sb:"+sb); } } 執行結果: /** * @author 傑哥 *sb:helloA1996 *--------------- *sb:hello迪麗熱巴A1996 */
2)刪除功能
public StringBuffer deleteCharAt(int index):移除指定位置處的字元..
public StringBuffer delete(int start,int end):移除從指定位置處到end-1處的子字串...
例如:
package TextDome;
/**
* StringBuffer的刪除功能:
*
* public StringBuffer deleteCharAt(int index):移除指定位置處的字元..
* public StringBuffer delete(int start,int end):移除從指定位置處到end-1處的子字串...
*/
public class StringDomedelete {
public static void main(String[] args) {
StringBuffer s=new StringBuffer();
s.append("Iloveyou");
s.append("迪麗熱巴");
s.deleteCharAt(8);
System.out.println("s:"+s);
System.out.println("------------");
s.delete(1, 5);
System.out.println("s:+"+s);
}
}
執行結果:
/**
* @author 傑哥
*s:Iloveyou麗熱巴
*--------------
*s:+Iyou麗熱巴
*/
3)反轉功能
public StringBuffer reverse() :將緩衝區中的字元序列反轉取代,返回它(字串衝)本身
package TextDome;
//public StringBuffer reverse() :將緩衝區中的字元序列反轉取代,返回它(字串衝)本身
public class StringBufferReverse {
public static void main(String[] args) {
StringBuffer sb=new StringBuffer();
sb.append("abcdef");
System.out.println(sb.reverse());
}
}
執行結果:
fedcba
4)擷取功能
public String substring(int start):從指定位置開始擷取,預設擷取到末尾,返回值不在是緩衝區本身,而是一個新的字串
public String substring(int start,int end) :從指定位置開始到指定位置結束擷取,包前不包後,返回值不在是緩衝區本身,而是一個新的字串
例如:
package TextDome;
/*public String substring(int start):從指定位置開始擷取,預設擷取到末尾,返回值不在是緩衝區本身,而是一個新的字串
public String substring(int start,int end) :從指定位置開始到指定位置結束擷取,包前不包後,返回值不在是緩衝區本身,而是一個新的字串*/
public class StringBufferSubstring {
public static void main(String[] args) {
StringBuffer ss=new StringBuffer();
ss.append("迪麗熱巴最美");
String str=ss.substring(2);
System.out.println("str:"+str);
String str1=ss.substring(0, 2);
System.out.println("str1:"+str1);
}
}
執行結果:
/**
* @author 傑哥
*str:熱巴最美
*str1:迪麗
*/
5)替換功能
public StringBuffer replace(int start,int end,String str)
從指定位置到指定位置結束,用新的str字串去替換,返回值是字串緩衝區本身
例如:
package TextDome;
public class StringBufferReplace {
public static void main(String[] args) {
StringBuffer s1=new StringBuffer();
s1.append("baby最美");
s1.replace(0, 4, "迪麗熱巴");
System.out.println("s1:"+s1);
}
}
執行結果:s1:迪麗熱巴最美
StringBuffer與String之間的相互轉化:
例如:package TextDome;
public class StringBufferChange {
public static void main(String[] args) {
//String轉換成StringBuffe
String s="reverse";
//方式1:通過帶參方法
StringBuffer sb=new StringBuffer(s);
System.out.println("sb:"+sb);
//方式2:通過無參方法給進行賦值
StringBuffer sb2=new StringBuffer();
sb2.append(s);
System.out.println("sb2:"+sb2);
System.out.println("--------------");
//StringBuffer轉換成String
StringBuffer sb3=new StringBuffer("subString");
//方式1
String str=new String(sb3);
System.out.println("str:"+str);
//方式2
String str2=sb3.toString();//這是StringBuffer的特有功能
System.out.println("str2:"+str2);
}
}
執行結果:
/**
* @author 傑哥
*sb:reverse
*sb2:reverse
*-------------
*str:subString
*str2:subString
*/
StringBuffer、String和StringBuilder的區別?
StringBuffer和StringBuilder都是一個可變的字元序列,提供了一個緩衝區(兩者都可以看做容器)
StringBuffer:執行緒是安全的,同步的,執行效率低
StringBuilder:執行緒不安全的,不同步的,執行效率高,並且在單執行緒中優先採取StringBuilder
StringBuffer執行效率雖然低,但是在記憶體角度優於String型別,並且他還是一個可變的字元序列,
StringBuffer與陣列的區別?
陣列:他可以儲存多個數據的容器,並且多個數據的型別必須一致
陣列長度功能:length屬性
StringBuffer:它是一個容器,它在緩衝區始終儲存的只能是字串型別的資料
獲取緩衝區的長度:length()方法
相關推薦
StringBuffer的認識及與陣列、String的區別
StringBuffer在開始時,首先看看String和stringbuffer的區別?String是一個不可變的字元序列,而stringbuffer是一個可變的字元序列。記憶體方面:String是在常量區開闢空間,比較耗費記憶體,而stringbuffer是一個字串緩衝區,
list與Set、Map區別及適用場景
適合 線程 可重復 set、map equals 註意 位置 tor span 1、List,Set都是繼承自Collection接口,Map則不是 2、List特點: 元素有放入順序,元素可重復 ,Set特點:元素無放入順序,元素不可重復,重復元素會覆蓋掉,(註意:元
談GPU的作用、原理及與CPU、DSP的區別
GPU是顯示卡的“心臟”,也就相當於CPU在電腦中的作用,它決定了該顯示卡的檔次和大部分效能,同時也是2D顯示卡和3D顯示卡的區別依據。2D顯示晶片在處理3D影象和特效時主要依賴CPU的處理能力,稱為“軟加速”。3D顯示晶片是將三維影象和特效處理功能集中在顯示晶片內,也即所謂
java 常用集合list與Set、Map區別及適用場景總結
轉載請備註出自於:http://blog.csdn.net/qq_22118507/article/details/51576319 list與Set、Map區別及適用場景 1、List,Set都是繼承自Collection介面,Map則不是 2
Java中字元陣列、String類、StringBuffer三者的相互轉換
char[] data = {'H', 'e', 'l','l', 'o', 'd'};String str = new String();//或者直接呼叫構造方法:String str = new String(data);str = String.valueOf(data);//呼叫String類的v
JSON物件中的JSONObject和JSONArray以及與Map、String、陣列的轉化
本文一句的寫作思路:由簡入繁 一、簡單模式 1、建立JSONObject物件 JSONObject json=new JSONObject();json.put("name", "小明");json.put("age", "10");System.out.println(json.toString());
hql語言的使用及與sql語言的區別
1. 什麼是hql HQL是Hibernate Query Language的縮寫 查全部 2. hql和sql區別/異同 HQL
java中 String.format與StringBuilder、String+的比較
效率比較程式碼如下: int [] testNums =new int[]{10,10000,100000,1000000,10000000}; for(int item:testNums){ System.out.println("testnums:"+item);
1、連結串列與陣列、時間複雜度、空間複雜度
1、記憶體中開闢空間: C語言中:全域性、域、堆空間(malloc/new) 組織形式: a、連續記憶體空間:申請一個數組,申連續記憶體 b、分散空間:申請次數無
php物件(object) 與 陣列(array) 的區別以及轉換
php中物件和陣列的區別 物件不僅有屬性,還有方法;,物件可以封裝對這些資料的操作,而陣列是辦不到的。 因此:如果是單純存資料,就用陣列,但如果你要定義對這些資料的操作,更建議使用物件! 舉例: 如果你想在操作的資料里加個通用的方法,比如返回值是加密的,或者其它等等功能,這時
Long物件對比大小及與long基本型別的區別
Long 型別指的是 java.util.Lang 物件,而long基本型別 (注意大小寫) Java中如果使用 == 雙等於比較物件,等於比較的是兩個物件的記憶體地址,也就是比較兩個物件是否是同一個物件, 如果比較兩個Long物件值是否相等,則不可以使用雙等號進行比
Velocity淺析及與Jsp、Freemarker對比
Velocity 是一個基於java 的模板引擎(template engine). 它可以讓檢視的設計者在web 頁面中引用java 程式碼中定義的資料物件和命令。從而使Web designers 和java 開發者依照MVC 思想(Model-View-Controller )開發系統,這意味著Web
List與Set、Map區別
區別總攬: 1、List,Set都是繼承自Collection介面,Map則不是 2、List特點:元素有放入順序,元素可重複 Set特點:元素無放入順序,元素不可重複,重複元素會覆蓋
面向物件的理解及與面向過程的區別
面對物件就是:把資料及對資料的操作方法放在一起,作為一個相互依存的整體——物件。對同類物件抽象出其共性,形成類。類中的大多數資料,只能用本類的方法進行處理。類通過一個簡單的外部介面與外界發生關係,物件與物件之間通過訊息進行通訊。程式流程由使用者在使用中決定。面向過程就是:自頂
UART簡介及與COM口的區別
簡單的講:(UART與COM) 嵌入式裡面說的串列埠,一般是指UART口, 但是我們經常搞不清楚它和COM口的區別, 以及RS232, TTL等關係, 實際上UART,COM指的物理介面形式(硬體), 而TTL、RS-232是指的電平標準(電訊號).
java byte與char、String互轉原理
一、位元組和unicode Java核心是unicode的,就連class檔案也是,但是很多媒體,包括檔案/流的儲存方式是使用位元組流的。因此Java要對這些位元組流經行轉化。 char是unicode的,而byte是位元組。Java中 byte/char互轉的函式在su
對APICloud的認識及與DCloud的簡單對比
APICloud是一家移動應用雲服務提供商。它為開發者從“雲”和“端”兩方面提供API模組服務,它幫助開發者把“重複造輪子”的開發環節架構好,簡化了移動應用的開發技術,縮短開發週期。 APICloud成立於2014年初,兩位創始人劉鑫和鄒達出自同一家面向企業級市場的移動應
C語言學習——指標與陣列、空指標
指標與陣列 方法1 方法2 小案例 空指標 指標與陣列 陣列的元素在記憶體中是互連的,通過指標運算元組某個元素 方法1 int vals[4]={1,2,3
linux——管理系統裝置之磁碟的加密、加密磁碟的掛載及磁碟陣列、配額
一、磁碟加密1.磁碟加密命令祥解:[[email protected] ~]# cryptsetup luksFormat /dev/vdb1 ##對裝置/dev/vdb1進行加密WARNING!========This will overwrite data o
JAVA檔案工具類之——檔案寫入(byte陣列、String方式、url寫入方式)
/** * 將byte陣列寫入檔案 * * @param path * @param fileName * @param content * @throws I