1. 程式人生 > >JAVA常用類庫之String類

JAVA常用類庫之String類

String兩種例項化方式比較:

String類一旦申明則不可改變,兩種例項化方式為:

方式一:使用構造方法String str = new String("hello");
方式二:採用直接賦值的方式:String str = "hello";
  一個字串其實就是一個String類的匿名物件,匿名物件就是已經開闢了堆記憶體空間並且可以直接使用的的物件。實際上對於String str = "hello world";而言,其實就是把一個堆中開闢好堆記憶體空間的使用權交給str物件,其實,使用此方法還有一個好處就是:如果一個字串已經被另一個名稱所引用,則以後再有相同的字串申宣告時,則不會再開闢新的空間,而是直接使用已存在的空間。
  String類的設計使用了一個共享設計模式。

在JVM的底層實際上會自動維護一個物件池(字串物件池),如果現在採用了直接賦值的模式進行String類物件的例項化操作,那麼該例項化物件(字串)將自動的儲存到這個物件池之中,如果下次繼續有人使用了直接賦值的模式聲明瞭String類的物件,那麼如果此時物件池之中有指定的內容,那麼將直接進行引用,如果沒有,則開闢新的字串物件,而後將其儲存在物件池之中以供下次使用。(所謂的物件池就是一個物件陣列)。 所以結論如下:
   · 直接賦值:只會開闢一塊堆記憶體空間,並且該字串物件可以儲存在物件池中以供下次使用;
   · 構造方法:會開闢兩塊堆記憶體空間,一塊將稱為垃圾,並且不會自動儲存在物件池之中,可以使用intern()方法手工入池。

在以後的開發中使用直接賦值的方式。

String中常用的方法有:

序號 方法名稱 描述
1 public String(char[] value) 將字串陣列中的所有內容變為字串
2 public String(char[] value,int offset,int count) 將部分字元陣列中的內容變為字串
3 public char charAt(int index) 取得指定索引位置的字元,索引從0開始
4 pubic char[] toCharArray() 將字串變為字元陣列返回
5 public String(byte [] bytes) 將位元組陣列變為字串
6 public String(lbyte [] byte,int offset,int length) 將部分位元組陣列變為字串
7 public byte [] getByte() 將字串以位元組陣列的形式返回
8 public void byte[] getBytes(String charsetName) throws UnsopportedEncodingException 編碼轉換處理
9 public boolean equals(String anObject) 區分大小寫的比較
10 ppublic boolean equalsIgnorCase(String anotherString) 不區分大小寫的轉換
11 public int compareTo(anotherString) 比較兩個字串的大小關係
12 public boolean contains(String s) 判斷一個字串是否存在
13 public int indexOf(String str) 從開頭查詢指定字串的位置,查詢到了返回位置的索引,如果查不到則返回-1
14 public int indexOf(String str,int fromIndex) 從指定位置開始查詢子字串的位置
15 public int lastIndexOf(String str) 從後向前開始查詢子字串的位置
16 public int lastIndexOf(String str,int fromIndex) 從指定位置由後向前查詢
17 public boolean startsWith(String prefix) 從頭開始判斷是否以指定的字串開頭
18 public boolean startsWith(String prefix,int toffset) 從指定位置開始判斷是否以指定的字串開頭
19 public boolean endsWith(String suffix) 判斷是否以指定的子字串結尾
20 public String replaceAll(String regex,String replacement) 替換所有的內容
21 public String replaceFirst(String regex,String replacement) 替換首個內容
22 public String[] split(String regex) 將字串全部拆分
23 public String [] split(String regex,int limit) 將字串全部拆分,該陣列的長度就是limit極限
24 public String subString(int beginIndex) 從指定索引擷取到結尾
25 public String subString(int beginIndex,int endIndex) 擷取指定索引內的內容
26 public String trim() 去掉字串左右兩邊的空格,保留中間的空格
27 public String toUpperCase() 字串轉大寫
28 public String toLowerCase() 字串轉小寫
29 public String intern() 字串如物件池
30 public String concat(String str) 字串連線,相當於+
31 public int length() 取得字串的長度
32 public loolean isEmpty() 判斷是否為空字串(但不是null,而是長度為0)