java.lang.Object

-
public final class String
- extends Object
- implements Serializable, Comparable<String>, CharSequence
- extends Object
String
類代表字符串。Java 程序中的所有字符串字面值(如 "abc"
)都作為此類的實(shí)例來(lái)實(shí)現(xiàn)。
字符串是常量;它們的值在創(chuàng)建之后不能改變。字符串緩沖區(qū)支持可變的字符串。因?yàn)?String 對(duì)象是不可變的,所以可以共享它們。例如:
String str = "abc";
等效于:
char data[] = {'a', 'b', 'c'}; String str = new String(data);String 類包括的方法有:檢查序列的單個(gè)字符;比較字符串;搜索字符串;提取子字符串;創(chuàng)建字符串副本,在該副本中,所有的字符都被轉(zhuǎn)換為大寫或小寫形式。大小寫映射基于Character
類指定的 Unicode Standard 版本。2.
public final class StringBuffer- extends Object
- implements Serializable, CharSequence
線程安全的可變字符序列。一個(gè)類似于
String
的字符串緩沖區(qū),但不能修改。雖然在任意時(shí)間點(diǎn)上它都包含
某種特定的字符序列,但通過(guò)某些方法調(diào)用可以改變?cè)撔蛄械拈L(zhǎng)度和內(nèi)容。可將字符串緩沖區(qū)安全地用于多個(gè)線程。可以在必要時(shí)對(duì)這些方法進(jìn)行同步,因此任意特定實(shí)例上的所有操作
就好像是以串行順序發(fā)生的,該順序與所涉及的每個(gè)線程進(jìn)行的方法調(diào)用順序一致。
StringBuffer
上的主要操作是append
和insert
方法,可重載這些方法,以接受任意類型的數(shù)據(jù)。每個(gè)方法
都能有效地將給定的數(shù)據(jù)轉(zhuǎn)換成字符串,然后將該字符串的字符追加或插入到字符串緩沖區(qū)中。append
方法始
終將這些字符添加到緩沖區(qū)的末端;而insert
方法則在指定的點(diǎn)添加字符。例如,如果
z
引用一個(gè)當(dāng)前內(nèi)容為 "start
" 的字符串緩沖區(qū)對(duì)象,則此方法調(diào)用z.append("le")
會(huì)使字符
串緩沖區(qū)包含 "startle
",而z.insert(4, "le")
將更改字符串緩沖區(qū),使之包含 "starlet
"。通常,如果 sb 引用
StringBuilder
的一個(gè)實(shí)例,則sb.append(x)
和sb.insert(sb.length(), x)
具有
相同的效果。當(dāng)發(fā)生與源序列有關(guān)的操作(如源序列中的追加或插入操作)時(shí),該類只在執(zhí)行此操作的字符串緩沖區(qū)上而不是
在源上實(shí)現(xiàn)同步。每個(gè)字符串緩沖區(qū)都有一定的容量。只要字符串緩沖區(qū)所包含的字符序列的長(zhǎng)度沒有超出此容量,就無(wú)需分配新
的內(nèi)部緩沖區(qū)數(shù)組。如果內(nèi)部緩沖區(qū)溢出,則此容量自動(dòng)增大。從 JDK 5 開始,為該類補(bǔ)充了一個(gè)單個(gè)線程使
用的等價(jià)類,即StringBuilder
。與該類相比,通常應(yīng)該優(yōu)先使用 StringBuilder 類,因?yàn)樗С炙邢嗤?br>的操作,但由于它不執(zhí)行同步,所以速度更快。