1. 程式人生 > >String類、StringBuffer類和StringBuilder類

String類、StringBuffer類和StringBuilder類

String類

建立String類的物件的兩種方式

(1)""直接賦值法

(2)new關鍵字法

new String("abc")建立了幾個物件?

答:兩個物件,首先會先檢查字串常量池中存不存在abc這個字串物件,如果不存在就會建立,如果存在就返回記憶體地址值。建立了出來之後,new String這個語句就會在堆記憶體中開闢一個字串物件。總共兩個物件。

常用方法

獲取方法

int length()  獲取字串的長度

char charAt(int index) 獲取特定位置的字元 (角標越界)

int indexOf(String str) 獲取特定字元的位置(overload)

int lastIndexOf(int ch) 獲取最後一個字元的位置

判斷方法

boolean endsWith(String str) 是否以指定字元結束

boolean isEmpty()是否長度為0 如:“” null V1.6

boolean contains(CharSequences) 是否包含指定序列 應用:搜尋

boolean equals(Object anObject) 是否相等

boolean equalsIgnoreCase(String anotherString) 忽略大小寫是否相等

轉換方法

String(char[] value) 將字元陣列轉換為字串

String(char[] value, int offset, int count)

   offset: 指定從陣列中那個索引值開始解碼。

   length: 要解碼多個元素。

Static String valueOf(char[] data)  返回 char 陣列引數的字串表示形式。

static String valueOf(char[] data, int offset, int count)  返回 char 陣列引數的特定子陣列的字串表示形式。

char[] toCharArray()  將字串轉換為字元陣列

byte[] getBytes();  將字串轉換為位元組陣列

其他方法

String replace(char oldChar, char newChar) 替換

String[] split(String regex) 切割

String substring(int beginIndex)

String substring(int beginIndex, int endIndex)擷取字串

String toUpperCase() 轉大寫

String toLowerCase() 轉小寫

String trim() 去除空格

StringBuffer類

由於String是不可變的,所以導致String物件氾濫,在頻繁改變字串物件的應用中,需要使用可變的字串緩衝區類。StringBuffer 其實就是一個儲存字元的容器。

特點:

  1. 預設緩衝區的容量是16。
  2. StringBuffer  : 執行緒安全的所有的緩衝區操作方法都是同步的,效率很低。

使用Stringbuffer無參的建構函式建立一個物件時,預設的初始容量是多少?如果長度不夠使用了,自動增長多少倍?

   答:StringBuffer 底層是依賴了一個字元陣列才能儲存字元資料的,該字串陣列預設 的初始容量是16, 如果字元陣列的長度不夠使用,自動增長1倍。

新增方法

StringBuffer("jack")     在建立物件的時候賦值

append()              在緩衝區的尾部新增新的文字物件

insert()                在指定的下標位置新增新的文字物件

檢視方法

toString() 返回這個容器的字串

indexOf(String str, int fromIndex) 查詢指定的字串第一次出現的索引值,並且指定開始查詢的位置。

lastIndexOf(String str)查詢指定的字串最後一次出現的索引值

substring(int start) 從開始的位置開始擷取字串

capacity() 檢視當前字元陣列的長度。

length()獲取字串的長度

charAt(int index) 獲取特定位置的字元 (角標越界)

toString() 把字串緩衝類的內容轉成字串返回。

修改方法

replace(int start int end String str)  使用給定 String 中的字元替換此序列的子字串中的字元。該子字串從指定的 start 處開始,一直到索引 end - 1 處的字元

setCharAt(int index char ch)  指定索引位置替換一個字元

delete(int start, int end) 刪除從start到end-1的字元

reverse() 把字串反序輸出

StringBuilder

StringBuilder 是JDK1.5之後提出的,執行緒不安全,但是效率要高。用法與StringBuffer類似。StringBuffer 與 StringBuilder的相同處與不同處:

相同點:

    1. 兩個類都是字串緩衝類。

    2. 兩個類的方法都是一致的。

不同點:

    1. StringBuffer是執行緒安全的,操作效率低 ,StringBuilder是執行緒非安全的,操作效 率高。

    2. StringBuffer是jdk1.0出現 的,StringBuilder 是jdk1.5的時候出現的。  

推薦使用: StringBuilder,因為操作效率高。