廢話不多說(shuō), 直接進(jìn)正題, 快上車!
String 字符串
這個(gè)類是開(kāi)發(fā)中接觸最多的幾個(gè)類之一, 你基本每天, 甚至每個(gè)小時(shí)都會(huì)跟他打打交道, 而JAVA中他的作用就是程序中的所有字符串字面值(如 "qwer" )都作為此類的實(shí)例實(shí)現(xiàn)绒怨。
首先我們要注意的是:
- String是常量 ! ! ! ! 是常量! ! ! ! 常量! ! ! !
- 它們的值在創(chuàng)建之后不能更改 ! ! ! 不能改啊 ! ! ! !
請(qǐng)把上面這兩句話用咆哮體嵌入到腦中.
把這兩句話記到腦子里之后, 你可以創(chuàng)建一個(gè)String了, 但是要注意, 字符串緩沖區(qū)支持可變的字符串.因?yàn)?String 對(duì)象是不可變的,所以可以共享.
比如說(shuō):
String str = "abc";
等效于
char data[] = {'a', 'b', 'c'};
String str = new String(data);
字符串有很多的構(gòu)造函數(shù)和方法可以使用, 而在JAVA中甚至你在打印方法中用一個(gè)簡(jiǎn)簡(jiǎn)單單的"+" 就可以達(dá)成拼接的效果了, 十分的簡(jiǎn)便易用.而介紹String方法需要大量的篇幅, 在這里我只介紹幾個(gè)比較常用的.
- 這個(gè)方法的用處是將指定字符串連接到此字符串的結(jié)尾
concat(String str)
return String;
- 將此字符串與指定的對(duì)象比較
equals(Object object)
return boolean;
- 返回此字符串的長(zhǎng)度
length()
return int;
- 根據(jù)給定的正則表達(dá)式來(lái)拆分字符串
spilt(String regex)
return String[];
- 返回N種參數(shù)的字符串表達(dá)形式
valueof(boolean b | char c | char[] data | char[] data, int offset, int count | double d | float f | int i | long l | Object object)
return static String;
如果其他需求請(qǐng)查看官方API, 那里很全的.
StringBuffer
這個(gè)東西和String最大的區(qū)別就是, 他是一個(gè)線程安全的可變字符序列
而對(duì)于它的內(nèi)存方面也有個(gè)要注意的點(diǎn): 其初始容量為 16 個(gè)字符, 這句話的意思不是他只能存 16 個(gè)字符的東西, 只要字符串緩沖區(qū)所包含的字符序列的長(zhǎng)度沒(méi)有超出此容量拨黔,就無(wú)需分配新的內(nèi)部緩沖區(qū)數(shù)組饰潜。如果內(nèi)部緩沖區(qū)溢出奔脐,則此容量自動(dòng)增大.
以前都是用這個(gè)東西, 因?yàn)樗踩€可變, 但是開(kāi)發(fā)者發(fā)現(xiàn)這個(gè)東西太慢了, 因?yàn)樗€程安全的鍋, 對(duì)于他簡(jiǎn)直又愛(ài)又恨. 然后偉大的JAVA又推出了下面的一個(gè)類.
StringBuilder
他同樣是一個(gè)可變的字符序列测萎。此類提供一個(gè)與 StringBuffer 兼容的 API,但不保證同步沪铭。該類被設(shè)計(jì)用作 StringBuffer 的一個(gè)簡(jiǎn)易替換壮池,用在字符串緩沖區(qū)被單個(gè)線程使用的時(shí)候(這種情況很普遍)。
如果可能杀怠,建議優(yōu)先采用該類椰憋,因?yàn)樵诖蠖鄶?shù)實(shí)現(xiàn)中,它比 StringBuffer 要快赔退。
在 StringBuilder 上的主要操作是 append 和 insert 方法橙依,可重載這些方法,以接受任意類型的數(shù)據(jù)硕旗。每個(gè)方法都能有效地將給定的數(shù)據(jù)轉(zhuǎn)換成字符串窗骑,然后將該字符串的字符追加或插入到字符串生成器中。append 方法始終將這些字符添加到生成器的末端漆枚;而 insert 方法則在指定的點(diǎn)添加字符
- 追加到字符串末尾
append(N種參數(shù))
return StringBuilder;
- 插入到字符串中
insert(N種參數(shù))
return StringBuilder;