String StringBuffer StringBuilder

String

在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

StringBuffer和String同樣都是用來存放字符串的,可是與String實現方式不一樣,在對字符串的修改時不會建立新的對象,String的修改回生成一個新的對象

StringBuffer 必須經過new來建立對象,對字符串的追加刪除修改都比較靈活,

 一、append():追加指定內容到當前StringBuffer對象的末尾,相似於字符串的鏈接,這裏StringBuffer對象的內容會發生改變。

      二、insert:該類方法主要是在StringBuffer對象中插入內容。

      三、delete:該類方法主要用於移除StringBuffer對象中的內容。

StringBuilder

StringBuilder也是一可變的字符串對象, 不是線程安全的,因此的速度是最快的,主要用於追加和修改

 

三者區別

String

StringBuffer

StringBuilder

String的值是不可變的,這就致使每次對String的操做都會生成新的String對象,不只效率低下,並且浪費大量優先的內存空間

StringBuffer是可變類,和線程安全的字符串操做類,任何對它指向的字符串的操做都不會產生新的對象。每一個StringBuffer對象都有必定的緩衝區容量,當字符串大小沒有超過容量時,不會分配新的容量,當字符串大小超過容量時,會自動增長容量

可變類,速度更快

不可變

可變

可變

 

線程安全

線程不安全

上表來自:https://blog.csdn.net/weixin_41101173/article/details/79677982

 

拼接字符字符串時效率關係:append> contact>+

 

我目前還在學習,在學習期間努力每週寫一篇,以上部分爲我的筆記和網絡搜索整理,因爲學習任務多,加上我的語言組織能力不強,若是有錯誤請路過的大佬指出,也請見諒!!

相關文章
相關標籤/搜索