1. 程式人生 > >StringBuffer的認識及與陣列、String的區別

StringBuffer的認識及與陣列、String的區別

StringBuffer

在開始時,首先看看Stringstringbuffer的區別?

String是一個不可變的字元序列,而stringbuffer是一個可變的字元序列。

記憶體方面:String是在常量區開闢空間,比較耗費記憶體,而stringbuffer是一個字串緩衝區,當字串的大小沒有超過緩衝區的容量時,可以呼叫之前的字串,不用開闢新的空間

Stringbuffer提供的是字串緩衝區,是屬於java.lang包裡的,被final修飾

Stringbuffer的構造方法:

StringBuffer():無參構造的格式,初始化容量為16

StringBufferint capacity):指定容量構造一個字串緩衝區

StringBufferString 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  insertint offsetString 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:迪麗熱巴最美

StringBufferString之間的相互轉化:

例如:
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是一個字串緩衝區,

listSetMap區別適用場景

適合 線程 可重復 set、map equals 註意 位置 tor span 1、List,Set都是繼承自Collection接口,Map則不是 2、List特點: 元素有放入順序,元素可重復 ,Set特點:元素無放入順序,元素不可重復,重復元素會覆蓋掉,(註意:元

談GPU的作用原理CPUDSP的區別

GPU是顯示卡的“心臟”,也就相當於CPU在電腦中的作用,它決定了該顯示卡的檔次和大部分效能,同時也是2D顯示卡和3D顯示卡的區別依據。2D顯示晶片在處理3D影象和特效時主要依賴CPU的處理能力,稱為“軟加速”。3D顯示晶片是將三維影象和特效處理功能集中在顯示晶片內,也即所謂

java 常用集合listSetMap區別適用場景總結

 轉載請備註出自於:http://blog.csdn.net/qq_22118507/article/details/51576319                list與Set、Map區別及適用場景 1、List,Set都是繼承自Collection介面,Map則不是 2

Java中字元陣列StringStringBuffer三者的相互轉換

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以及MapString陣列的轉化

本文一句的寫作思路:由簡入繁 一、簡單模式 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.formatStringBuilderString+的比較

效率比較程式碼如下: 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淺析JspFreemarker對比

Velocity 是一個基於java 的模板引擎(template engine). 它可以讓檢視的設計者在web 頁面中引用java 程式碼中定義的資料物件和命令。從而使Web designers 和java 開發者依照MVC 思想(Model-View-Controller )開發系統,這意味著Web

ListSetMap區別

區別總攬: 1、List,Set都是繼承自Collection介面,Map則不是 2、List特點:元素有放入順序,元素可重複 Set特點:元素無放入順序,元素不可重複,重複元素會覆蓋

面向物件的理解面向過程的區別

面對物件就是:把資料及對資料的操作方法放在一起,作為一個相互依存的整體——物件。對同類物件抽象出其共性,形成類。類中的大多數資料,只能用本類的方法進行處理。類通過一個簡單的外部介面與外界發生關係,物件與物件之間通過訊息進行通訊。程式流程由使用者在使用中決定。面向過程就是:自頂

UART簡介COM口的區別

簡單的講:(UART與COM)      嵌入式裡面說的串列埠,一般是指UART口, 但是我們經常搞不清楚它和COM口的區別,  以及RS232, TTL等關係,  實際上UART,COM指的物理介面形式(硬體), 而TTL、RS-232是指的電平標準(電訊號).     

java bytecharString互轉原理

一、位元組和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