在String中,String不是基本數據類型,String的實現是經過char數組實現,char數組是final不可變類型,編程
private final char[] value;數組
String類也是final,因爲String不是基本數據類型,因此默認值是null;安全
注意區分 null, 「 」,和new String();網絡
Null是將string對象指向null,在堆裏邊沒有String 對象指向的引用,app
「 」:String 在編程的過程當中常常使用,因此容許它直接賦值就和基本數據同樣(但它並非基本數據類型)學習
New String() 調用構造方法建立一個string對象,測試
public String()ui
{ this.value = "".value; }this
在字符串中直接賦值的時候會有一個先放到字符串池中,直接賦值的時候會在先在字符串池中查找,若是存在,那麼直接將引用複製到對象,不然新建一個對象;能夠節約內存空間,提升效率spa
在字符串比較過程是 == 比較的是地址(引用) 比較值須要使用equals()
常見的方法:
equals() ——判斷內容是否相同。
compareTo() ——判斷字符串的大小關係。
compareToIgnoreCase(String int) ——在比較時忽略字母大小寫。
== ——判斷內容與地址是否相同。
equalsIgnoreCase() ——忽略大小寫的狀況下判斷內容是否相同。
regionMatches() ——對字符串中的部份內容是否相同進行比較(詳情請參考API)。
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)——測試此字符串是否以指定的後綴結束。
public String subString(int beginIndex)——返回一個新的字符串,它是此字符串的一個子字符串。
public String subString(int beginIndex,int endIndex)——返回的字符串是從beginIndex開始到endIndex-1的串。
public String replace(char oldChar,char newChar)替換字符
更多的看看API
StringBuffer和String同樣都是用來存放字符串的,可是與String實現方式不一樣,在對字符串的修改時不會建立新的對象,String的修改回生成一個新的對象
StringBuffer 必須經過new來建立對象,對字符串的追加刪除修改都比較靈活,
一、append():追加指定內容到當前StringBuffer對象的末尾,相似於字符串的鏈接,這裏StringBuffer對象的內容會發生改變。
二、insert:該類方法主要是在StringBuffer對象中插入內容。
三、delete:該類方法主要用於移除StringBuffer對象中的內容。
StringBuilder也是一可變的字符串對象, 不是線程安全的,因此的速度是最快的,主要用於追加和修改
三者區別
String |
StringBuffer |
StringBuilder |
String的值是不可變的,這就致使每次對String的操做都會生成新的String對象,不只效率低下,並且浪費大量優先的內存空間 |
StringBuffer是可變類,和線程安全的字符串操做類,任何對它指向的字符串的操做都不會產生新的對象。每一個StringBuffer對象都有必定的緩衝區容量,當字符串大小沒有超過容量時,不會分配新的容量,當字符串大小超過容量時,會自動增長容量 |
可變類,速度更快 |
不可變 |
可變 |
可變 |
|
線程安全 |
線程不安全 |
上表來自:https://blog.csdn.net/weixin_41101173/article/details/79677982
拼接字符字符串時效率關係:append> contact>+
我目前還在學習,在學習期間努力每週寫一篇,以上部分爲我的筆記和網絡搜索整理,因爲學習任務多,加上我的語言組織能力不強,若是有錯誤請路過的大佬指出,也請見諒!!