JAVA常用類庫之String類
阿新 • • 發佈:2019-02-11
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) |