Java的簡單理解(5)---String類和StringBuffer類

Java
52. String類

String類是不可變類,一個String對象所包含的字符串內(nèi)容永遠(yuǎn)不會被改變。

  • String 常量字符串,一旦賦值或?qū)嵗缶筒豢筛摹?/li>

java.lang包中的String類代表字符串。Java程序中的所有字符串字面值(如"abc")都作為此類的實例來實現(xiàn)。字符串是常量,它們的值在創(chuàng)建之后不能改變,因為String對象是不可變得,所以可以共享。

對于String類對象不可更改,我是有點疑惑的,請看這篇文章

  • String類常用方法
  1. public int length():
    返回此字符串的長度
  2. public native char charAt(int index):
    返回指定索引處的char值,索引范圍為從0到length() - 1。序列的第一個char值在索引0處,第二個> 在索引1處,依次類推,這類似于數(shù)組索引。
  3. public void getChars(int srcBegin, int srcEnd, char dst[], int dstBegin)
    將字符從當(dāng)前字符串復(fù)制到目標(biāo)字符數(shù)組。要復(fù)制的第一個字符在索引srcBegin處,要復(fù)制的最后一個字符在在索引srcEnd - 1處,因此要復(fù)制的字符總數(shù)是srcEnd - srcBegin。要復(fù)制到dst子數(shù)組的字符從索引dstBegin處開始,并結(jié)束與索引dstBegin + (srcEnd - srcBegin)- 1。
  4. public boolean equals(Object anObject)
    比較此字符串與指定的對象,當(dāng)且僅當(dāng)該參數(shù)不為null,并且表示與此對象相同的字符序列的String對象時,結(jié)果才為true。
  5. public boolean equalsIgnoreCase(String anotherString):
    將此String與另一個String進行比較(不考慮大小寫)。如果兩個字符串的長度相等,并且兩個字符串中的相應(yīng)字符都相等(忽略大小寫),則認(rèn)為這兩個字符串是相等的。
  6. public native int compareTo(String anotherString):
    按字典順序比較兩個字符串。該比較基于字符串中各個字符的unicode值。將此String對象表示的字符序列與參數(shù)字符串所表示的字符序列進行比較,如果按字典順序,此String對象在參數(shù)字符串之前,則比較結(jié)果為一個負(fù)整數(shù);如果按字典順序,此String對象位于參數(shù)字符串之后,則比較結(jié)果為一個正整數(shù);如果這兩個字符串相等,則結(jié)果為0。compareTo方法只有在方法equals(Object)返回true時才返回0.
  7. public int indexOf(int ch):
    返回指定字符在此字符串中第一次出現(xiàn)處的索引。如果在此String對象表示的字符序列中出現(xiàn)值為ch的字符,則返回第一次出現(xiàn)該字符的索引;如果此字符串中沒有這樣的字符,則返回-1.
  8. public int lastIndexOf(int ch):
    從最后一個字符開始向后搜索此String,返回最后一次出現(xiàn)的指定字符在此字符串中的索引。如果此字>
    符串中沒有這樣的字符出現(xiàn),則返回-1。
  9. public String substring(int beginIndex):
    返回一個新的字符串,它是此字符串的一個子字符串。該字符串始于指定索引處的字符,一直到此字符串末尾。
  10. public String concat(String str):
    將指定字符串聯(lián)到此字符串的結(jié)尾。如果參數(shù)字符串的長度為0,則返回此String對象。否則創(chuàng)建一個新的String對象,用來表示由 此String對象表示的字符序列和由參數(shù)字符串表示的字符序列串聯(lián)而成的字符序 列.
  11. public String[] split(String regex,int limit): 正則表達式不懂
    根據(jù)匹配給定的正則表達式來拆分此字符串。此方法返回的數(shù)組包含此字符串的每個子字符串,這些子字符串由另一個匹配給定的表達式的子字符串終止或由字符串結(jié)束來終止。數(shù)組中的子字符串按它們在此字符串中的順序排列,如果表達式不匹配輸入的任何部分,則結(jié)果數(shù)組只具有一個元素,即此字符串。limit參數(shù)控制模式應(yīng)用的次數(shù),因此影響結(jié)果數(shù)組的長度。如果該限制n大于0,則模式將被最多應(yīng)用n-1次,數(shù)組的長度將不會大于n,而且數(shù)組的最后一項將包含超出最后匹配的定界符的所有輸入;如果n為非正,則模式將被應(yīng)用盡可能多的次數(shù),而且數(shù)組可以是任意長度;如果n為0,則模式將被應(yīng)用盡可能多的次數(shù),數(shù)組可以有任何長度,并且結(jié)尾空字符串將被丟棄。
  12. public String replaceAll(String regex,String replacement):
    使用給定的replacement字符串替換此字符串匹配給定的正則表達式的每個子字符串。
  13. public String trim()
    返回字符串的副本,忽略前導(dǎo)空白和尾部空白。如果此String對象表示一個空字符序列,或者此String對象表示的字符序列的第一個和最后一個字符的代碼都大于\u0020(空格字符),則返回對此String對象的引用;如果字符串中沒有代碼大于\u0020的字符,則創(chuàng)建并返回一個表示空字符串的新的String對象;否則假定K為代碼大于\u0020的第一個字符的索引,m為代碼大于\u0020的最后一個字符的索引,創(chuàng)建一個新的String對象,它表示此字符串中從索引K處的字符開始,到索引m處的字符結(jié)束的子字符串,就是this.substring(k,m+1)的結(jié)果。此方法用于截去字符串從頭到尾的空白。
    一般的字符大于\u0020,換行符等轉(zhuǎn)義字符小于\u0020
  14. public static String valueOf(Object obj):
    返回Object參數(shù)的字符串表示形式。
53. StringBuffer類

java.lang包中的StringBuffer類表示可變字符序列。

StringBuffer類上的主要操作是appendinsert方法,可重載這些方法,以接收任意類型的數(shù)據(jù)。每個方法都能有效地將給定的數(shù)據(jù)轉(zhuǎn)換成字符串,然后將該字符串的字符追加或插入到字符串緩沖區(qū)中。append方法始終將這些字符添加到緩沖區(qū)的末端;而insert方法則在指定的點添加字符。

StringBuilder: 線程不安全,效率高
StringBuffer: 線程安全,效率低

每個字符串緩沖區(qū)都有一定的容量。只要字符串緩沖區(qū)所包含的字符序列的長度沒有超出此容量,就無需分配新的內(nèi)容緩沖區(qū)數(shù)組。如果內(nèi)容緩沖區(qū)溢出,則此容量自動增大。從JDK5開始,為該類補充了一個單個線程使用的等價類,即StringBuilder。與該類相比,通常應(yīng)該優(yōu)先使用StringBuilder類,因為它支持所有相同的操作,但由于它不支持同步,所以速度更快。

54. StringBuffer類的常用方法
  1. toString()
    返回此序列中數(shù)據(jù)的字符串表示形式

  2. append(boolean b):
    將boolean參數(shù)的字符串表示形式追加到序列

  3. length():
    返回長度(字符數(shù))

  4. charAt(int index):
    返回此序列中指定索引處的char值。

  5. setCharAt(int index,char ch):
    將給定索引處的字符設(shè)置為ch。

  6. public void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
    將字符從此序列復(fù)制到目標(biāo)字符數(shù)組dst。

  7. public String substring(int start):
    返回一個新的String,它包含此字符序列當(dāng)前所包含的字符子序列

  8. insert(int offset, String str):
    將字符串插入此字符序列中。

55. String類和StringBuffer類下字符串的區(qū)別

String:常量字符串,一旦賦值或?qū)嵗缶筒豢筛摹?br> StringBuffer:字符串緩沖區(qū),支持可變的字符串。
如果對字符串中的內(nèi)容經(jīng)常進行操作,特別是內(nèi)容要修改時,使用StringBuffer;如果最后需要String,使用StringBuffertoString()方法。

56. 基本數(shù)據(jù)類型的對象類

Java的基本數(shù)據(jù)類型包括byte,int,shortlong,float,double,char,Java同時也提供了基本數(shù)據(jù)類型相關(guān)的類,Java語言用包裝類來把基本類型數(shù)據(jù)轉(zhuǎn)換為對象。每個Java基本類型在java.lang包中都有一個相應(yīng)的包裝類。

1,Double類和Float類

Double類和Float類實現(xiàn)了對doublefloat基本型數(shù)據(jù)的類包裝
(1)Double類在對象中包裝了一個基本類型double的值,每個Double類的對象都包含一個double類型的字段。
Double類的構(gòu)造方法

Double (double num)

構(gòu)造一個新分配的Double類對象,它表示基本的double類型參數(shù)。此外,該類還提供了多個方法,可以將double類型轉(zhuǎn)換為String類型,將String類型轉(zhuǎn)換為double類型,還提供了其他一些處理double類型時有用的常量和方法。

(2)Float類在對象中包裝了一個float基本類型的值,Float類的對象包含一個float類型的字段。
Float類的構(gòu)造方法:

Float (double value)

構(gòu)造一個新分配的Float對象,它表示轉(zhuǎn)換為float類型的參數(shù)。此外,此類提供了幾種方法可在float類型和String類型之間互相轉(zhuǎn)換,并且還提供了處理float類型時非常有用的其他一些常量和方法。

2. Byte,Integer,Short,Long類

(1)Byte類將基本類型byte的值包裝在一個對象中。
Byte類的構(gòu)造方法:

Byte (byte value)

該類提供了多個方法,可以將byte類型與String類型進行互換。

(2) Integer類在對象中包裝了一個基本類型int的值,Integer類的對象包含一個int類型的字段
Integer類的構(gòu)造方法:

Integer (int value)

該類提供了多個方法,可以將int類型與String類型進行互換。

(3) Short類在對象中包裝基本類型short的值,一個Short類的對象只包含一個short類型的字段。
Short類的構(gòu)造方法:

Short (short value)

該類提供了多個方法,可以將short類型與String類型進行互換。

(4) Long類在對象中封裝了基本類型long的值。每個Long類的對象都包含一個long類型的字段。

Long (long value)

該類提供了多個方法,可以將long類型與String類型進行互換。

3. Character類

Character類在對象中包裝一個基本類型char的值。Character類的對象包含類型為char的單個字段。
Character類的構(gòu)造方法:

Character (char value)

構(gòu)造一個新分配的Character對象,用于表示指定的char值。Character類還提供了幾種方法,這些方法可以直接通過類名調(diào)用,用來確定字符的類別(小寫字母,數(shù)字等),并將字符從大寫轉(zhuǎn)換成小寫,反之亦然。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容