String詳解, String和CharSequence區別, StringBuilder和StringBuffer的區別 (String系列之1)

本章主要介紹String和CharSequence的區別,以及它們的API詳細使用方法。

轉載請註明出處:http://www.cnblogs.com/skywang12345/p/string01.html

更多內容請參考:

1. StringBuilder 詳解 (String系列之2)

2. StringBuffer 詳解 (String系列之3)

String 簡介

String 是java中的字符串,它繼承於CharSequence。
String類所包含的API接口非常多。爲了便於今後的使用,我對String的API進行了分類,並都給出的演示程序。

String 和 CharSequence 關係
String 繼承於CharSequence,也就是說String也是CharSequence類型。
CharSequence是一個接口,它只包括length(), charAt(int index), subSequence(int start, int end)這幾個API接口。除了String實現了CharSequence之外,StringBuffer和StringBuilder也實現了CharSequence接口。
需要說明的是,CharSequence就是字符序列,String, StringBuilder和StringBuffer本質上都是通過字符數組實現的!

 

StringBuilder 和 StringBuffer 的區別

StringBuilder 和 StringBuffer都是可變的字符序列。它們都繼承於AbstractStringBuilder,實現了CharSequence接口。
但是,StringBuilder是非線程安全的,而StringBuffer是線程安全的

 線程安全就是在多線程環境下也不會出現數據不一致,而非線程安全就有可能出現數據不一致的情況。

線程安全由於要確保數據的一致性,所以對資源的讀寫進行了控制,換句話說增加了系統開銷。所以在單線程環境中效率比非線程安全的效率要低些,但是如果線程間數據相關,需要保證讀寫順序,用線程安全模式

它們之間的關係圖如下: 

 

更多關於“StringBuilder”的內容,請參考:http://www.cnblogs.com/skywang12345/p/string02.html

更多關於“StringBuffer”的內容,請參考  :http://www.cnblogs.com/skywang12345/p/string03.html

本章介紹StringBuilder以及它的API的詳細使用方法。

轉載請註明出處:http://www.cnblogs.com/skywang12345/p/string02.html

StringBuilder 簡介

StringBuilder 是一個可變的字符序列。它繼承於AbstractStringBuilder,實現了CharSequence接口。
StringBuffer 也是繼承於AbstractStringBuilder的子類;但是,StringBuilder和StringBuffer不同,前者是非線程安全的,後者是線程安全的。

StringBuilder 和 CharSequence之間的關係圖如下:


 

本章介紹StringBuffer以及它的API的詳細使用方法。

轉載請註明出處:http://www.cnblogs.com/skywang12345/p/string03.html

StringBuffer 簡介

StringBuffer 是一個線程安全的可變的字符序列。它繼承於AbstractStringBuilder,實現了CharSequence接口。
StringBuilder 也是繼承於AbstractStringBuilder的子類;但是,StringBuilder和StringBuffer不同,前者是非線程安全的,後者是線程安全的。

StringBuffer 和 CharSequence之間的關係圖如下:



http://pastqing.github.io/blog/2014/12/10/JAVA%20String%E7%B1%BB%E6%BA%90%E7%A0%81%E8%A7%A3%E6%9E%90%EF%BC%88%E4%B8%80%EF%BC%89.html


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