JAVA源碼分析(一)——String

String的源碼分析

Java中String不是基本數據類型,而是一種特殊的類。String代表的是不可變的字符序列,爲不可變對象,一旦被創建,就不能修改它的值,對於已經存在的String對象的修改都是重新創建一個新的對象,然後把新的值保存進去
從類的繼承和接口實現來看:
public final class String
    implements java.io.Serializable, Comparable<String>, CharSequence {

上面爲String的定義:
首先 Final修飾了 String 說明 String類只能用不能被繼承 終極類。 String還實現了序列化接口(Serializable)還有排序接口(Comparable),字符操作接口(CharSequence)。
看看 構造函數:
  String有15個構造函數 其中有兩個是過時方法。
String中方法有就是這幾個方面:

     1、字符串比較

         equals() ------判斷內容是否相同。

         compareTo() ------判斷字符串的大小關係。

         compareToIgnoreCase(String int) ------在比較時忽略字母大小寫。

         == ------判斷內容與地址是否相同。

         equalsIgnoreCase() ------忽略大小寫的情況下判斷內容是否相同。

         reagionMatches() ------對字符串中的部分內容是否相同進行比較(詳情請參考API)。

     2、字符串查找

         charAt(int index) ------返回指定索引index位置上的字符,索引範圍從0開始。

         indexOf(String str)------從字符串開始檢索str,並返回第一次出現的位置,未出現返回-1。

         indexOf(String str,int fromIndex);------從字符串的第fromIndex個字符開始檢索str。

         lastIndexOf(String str)------查找最後一次出現的位置。

         lastIndexOf(String str,int fromIndex)----從字符串的第fromIndex個字符查找最後一次出現的位置。

         starWith(String prefix,int toffset)-----測試此字符串從指定索引開始的子字符串是否以指定前綴開始。

         starWith(String prefix)------測試此字符串是否以指定的前綴開始。

         endsWith(String suffix)------測試此字符串是否以指定的後綴結束。

     3、字符串截取

        public String subString(int beginIndex)------返回一個新的字符串,它是此字符串的一個子字符串。

         public String subString(int beginIndex,int endIndex)------返回的字符串是從beginIndex開始到endIndex-1的串。

     4、字符串替換

         public String replace(char oldChar,char newChar)。

         public String replace(CharSequence target,CharSequence replacement)------把原來的etarget子序列替換爲replacement序列,返回新串。

         public String replaceAll(String regex,String replacement)------用正則表達式實現對字符串的匹配。注意replaceAll第一個參數爲正則表達式。




String中方法都比較簡單。 特殊的地方 就是傳說中的字符串常量池 每當我們創建一個字符串對象時,首先就會檢查字符串池中是否存在面值相等的字符串,如果有,則不再創建,直接放回字符串池中對該對象的引用,若沒有則創建然後放入到字符串池中並且返回新建對象的引用。這個機制是非常有用的,因爲可以提高效率,減少了內存空間的佔用。所以在使用字符串的過程中,推薦使用直接賦值(即String s=”aa”),除非有必要纔會新建一個String對象(即String s = new String(”aa”))。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章