Java String相關

來源:互聯網
上載者:User

標籤:大小寫   lower   others   limit   string   運行   分析   lang   緩衝   

 一.String類的常用方法

1. int indexOf(String s)                   字串尋找2. int lastIndexOf(String str) 3. char charAt(int index)                   擷取指定索引位置的字元4. String substring(int beginIndex)             擷取子字串5. String substring(int beginIndex,  int endIndex)6. String trim()                         去除空格7. boolean startsWith(String prefix)             判斷字串的開始與結尾8. boolean endsWith(String suffix) 9. boolean equals(String otherstr)              判斷字串是否相等10. boolean equalsIgnoreCase(String otherstr)  11. int compareTo()                       按字典順序比較兩個字串12. String toLowerCase()                    字母的大小寫轉換13. String toUpperCase() 
14. String[] split(String regex)                字串分割15. String[] split(String regex, int limit)16. static String valueOf(boolean,char(char[]),int,long,float,double,Object)  得到各種類型的字串表示

17. String intern()                       為每一個唯一的字元序列產生一個且僅產生一個String引用,intern:放入的意思,放入常量池

 

二.String類的特性

在 JAVA 語言中有8中基本類型和一種比較特殊的類型String。這些類型為了使他們在運行過程中速度更快,更節省記憶體,都提供了一種常量池的概念。常量池就類似一個JAVA系統層級提供的緩衝。8種基本類型的常量池都是系統協調的,String類型的常量池比較特殊。它的主要使用方法有兩種:

  • 直接使用雙引號聲明出來的String對象會直接儲存在常量池中。
  • 如果不是用雙引號聲明的String對象,可以使用String提供的intern方法。intern 方法會從字串常量池中查詢當前字串是否存在,若不存在就會將當前字串放入常量池中

String 有 3 個基本特點:

1. 不變性(唯讀特性);

2. 針對常量池的最佳化;

3. 類的 final 定義。

  不變性指的是 String 對象一旦產生,則不能再對它進行改變。String 的這個特性可以泛化成不變 (immutable) 模式,即一個對象的狀態在對象被建立之後就不再發生變化。不變模式的主要作用在於當一個對象需要被多線程共用,並且訪問頻繁時,可以省略同步和鎖等待的時間,從而大幅提高系統效能。

  針對常量池的最佳化指的是當兩個 String 對象擁有相同的值時,它們只引用常量池中的同一個拷貝,當同一個字串反覆出現時,這個技術可以大幅度節省記憶體空間。

 

String類中的每一個看起來會修改String值的方法,實際上都是建立了一個全新的String對象,以包含修改後的字串內容。(外部(例如重新賦值)和內部修改都是重新建立了一個新的String對象)

為什麼不變?源碼分析:

String 對象可以認為是 char 數組的延伸和進一步封裝,它主要由 3 部分組成:char 數組、位移量和 String 的長度。char 數組表示 String 的內容,它是 String 對象所表示字串的超集。String 的真實內容還需要由位移量和長度在這個 char 數組中進行定位和截取。

public final class String    implements java.io.Serializable, Comparable<String>, CharSequence{    /** The value is used for character storage. */    private final char value[];    /** The offset is the first index of the storage that is used. */    private final int offset;    /** The count is the number of characters in the String. */    private final int count;    /** Cache the hash code for the string */    private int hash; // Default to 0

Java7中略有改變:

public final class String    implements java.io.Serializable, Comparable<String>, CharSequence {    /** The value is used for character storage. */    private final char value[];    /** Cache the hash code for the string */    private int hash; // Default to 0

 

在JDK7中,只有一個value變數,也就是value中的所有字元都是屬於String這個對象的

三.編譯器對String的最佳化

1.用於String的“+”與“+=”是Java中僅有的兩個重載過的操作符

2.重載“+”與StringBuilder

  當String對象之間通過“+”串連時,編譯器自動引入了java.lang.StringBuilder類。雖然我們在源碼中沒有使用StringBuilder類,但是編譯器卻自作主張地使用了它,因為它更高效。

 

Java String相關

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.