java字符串函数及理解
Java中的字符串也是一連串的字符。但是與許多其他的計(jì)算機(jī)語(yǔ)言將字符串作為字符數(shù)組處理不同,Java將字符串作為String類型對(duì)象來(lái)處理。將字符串作為內(nèi)置的對(duì)象處理允許Java提供十分豐富的功能特性以方便處理字符串。
一,下面是一些使用頻率比較高的函數(shù)及其相關(guān)說(shuō)明。
(1)substring()。它有兩種形式,
第一種是:String substring(int startIndex)
第二種是:String substring(int startIndex,int endIndex)
(2)concat() 連接兩個(gè)字符串
(3)replace() 替換。它有兩種形式,
第一種形式用一個(gè)字符在調(diào)用字符串中所有出現(xiàn)某個(gè)字符的地方進(jìn)行替換,形式如下:
String replace(char original,char replacement)例如:String s=”Hello”.replace(’l',’w');
第二種形式是用一個(gè)字符序列替換另一個(gè)字符序列,形式如下:
String replace(CharSequence original,CharSequence replacement)
(4)trim() 去掉起始和結(jié)尾的空格
(5)valueOf() 轉(zhuǎn)換為字符串
(6)toLowerCase() 轉(zhuǎn)換為小寫(xiě)
(7)toUpperCase() 轉(zhuǎn)換為大寫(xiě)
(8)length() 取得字符串的長(zhǎng)度
String s=new String(chars);
int len=s.length();
(9)charAt() 截取一個(gè)字符.例:
char ch;
ch=”abc”.charAt(1);
返回值為’b’
(10)equals()和equalsIgnoreCase() 比較兩個(gè)字符串
(11)startsWith()和endsWith()
startsWith()方法決定是否以特定字符串開(kāi)始,endWith()方法決定是否以特定字符串結(jié)束
(12)equals()和==
equals()方法比較字符串對(duì)象中的字符,==運(yùn)算符比較兩個(gè)對(duì)象是否引用同一實(shí)例。
例:String s1=”Hello”;
String s2=new String(s1);
s1.eauals(s2); //true
s1==s2;//false
(13)indexOf()和lastIndexOf()
indexOf() 查找字符或者子串第一次出現(xiàn)的地方。
lastIndexOf() 查找字符或者子串是后一次出現(xiàn)的地方。
(14)toCharArray()
例:
String s = “Hello!你好!”;
char[] ss = s.toCharArray();
二,理解java.lang.String類
看看String類的源碼實(shí)現(xiàn),從中可以看到:
(1)String類是final的,不可被繼承。public final class String。
(2)String類的本質(zhì)是字符數(shù)組char[], 并且其值不可改變。private final char value[];
(3)String類對(duì)象有個(gè)特殊的創(chuàng)建的方式,就是直接指定比如String x = "abc","abc"就表示一個(gè)字符串對(duì)象。而x是"abc"對(duì)象的地址,也叫做"abc"對(duì)象的引用。
(4)String對(duì)象可以通過(guò)“+”串聯(lián)。串聯(lián)后會(huì)生成新的字符串。也可以通過(guò)concat()來(lái)串聯(lián),這個(gè)后面會(huì)講述。
(5)創(chuàng)建字符串的方式很多,歸納起來(lái)有三類:
其一,使用new關(guān)鍵字創(chuàng)建字符串,比如String s1 = new String("abc");
其二,直接指定。比如String s2 = "abc";
其三,使用串聯(lián)生成新的字符串。比如String s3 = "ab" + "c";
(6)Java運(yùn)行時(shí)會(huì)維護(hù)一個(gè)String Pool(String池),可翻譯成“字符串緩沖區(qū)”。String池用來(lái)存放運(yùn)行時(shí)中產(chǎn)生的各種字符串,并且池中的字符串的內(nèi)容不重復(fù)。
三,String對(duì)象的創(chuàng)建
String對(duì)象的創(chuàng)建也很講究,關(guān)鍵是要明白其原理。
原理1:當(dāng)使用任何方式來(lái)創(chuàng)建一個(gè)字符串對(duì)象s時(shí),Java運(yùn)行時(shí)(運(yùn)行中JVM)會(huì)拿著這個(gè)X在String池中找是否存在內(nèi)容相同的字符串對(duì)象,如果不存在,則在池中創(chuàng)建一個(gè)字符串s,否則,不在池中添加。
原理2:Java中,只要使用new關(guān)鍵字來(lái)創(chuàng)建對(duì)象,則一定會(huì)(在堆區(qū)或棧區(qū))創(chuàng)建一個(gè)新的對(duì)象。
原理3:使用直接指定或者使用純字符串串聯(lián)來(lái)創(chuàng)建String對(duì)象,則僅僅會(huì)檢查維護(hù)String池中的字符串,池中沒(méi)有就在池中創(chuàng)建一個(gè),有則罷了!但絕不會(huì)在堆棧區(qū)再去創(chuàng)建該String對(duì)象。
原理4:使用包含變量的表達(dá)式來(lái)創(chuàng)建String對(duì)象,則不僅會(huì)檢查維護(hù)String池,而且還會(huì)在堆棧區(qū)創(chuàng)建一個(gè)String對(duì)象。
另外,String的intern()方法是一個(gè)本地方法,定義為public native String intern(); intern()方法的價(jià)值在于讓開(kāi)發(fā)者能將注意力集中到String池上。當(dāng)調(diào)用 intern 方法時(shí),如果池已經(jīng)包含一個(gè)等于此 String 對(duì)象的字符串(該對(duì)象由 equals(Object) 方法確定),則返回池中的字符串。否則,將此 String 對(duì)象添加到池中,并且返回此 String 對(duì)象的引用。
四、常用的字符串函數(shù)
substring()
它 有兩種形式,第一種是:String substring(int startIndex)
第二種是:String substring(int startIndex,int endIndex)
concat() 連接兩個(gè)字符串
replace() 替換
它有兩種形式,第一種形式用一個(gè)字符在調(diào)用字符串中所有出現(xiàn)某個(gè)字符的地方進(jìn)行替換,形式如下:
String replace(char original,char replacement)
例如:String s=”Hello”.replace(’l',’w');
第二種形式是用一個(gè)字符序列替換另一個(gè)字符序列,形式如下:
String replace(CharSequence original,CharSequence replacement)
trim() 去掉起始和結(jié)尾的空格
valueOf() 轉(zhuǎn)換為字符串
toLowerCase() 轉(zhuǎn)換為小寫(xiě)
toUpperCase() 轉(zhuǎn)換為大寫(xiě)
length() 取得字符串的長(zhǎng)度
例:
char chars[]={’a',’b’.’c'};
String s=new String(chars);
int len=s.length();
charAt() 截取一個(gè)字符
例:
char ch;
ch=”abc”.charAt(1);
返回值為’b’
getChars() 截取多個(gè)字符
void getChars(int sourceStart,int sourceEnd,char target[],int targetStart)
sourceStart 指定了子串開(kāi)始字符的下標(biāo)
sourceEnd 指定了子串結(jié)束后的下一個(gè)字符的下標(biāo)。因此,子串包含從sourceStart到sourceEnd-1的字符。
target 指定接收字符的數(shù)組
targetStart target中開(kāi)始復(fù)制子串的下標(biāo)值
例:
String s=”this is a demo of the getChars method.”;
char buf[]=new char[20];
s.getChars(10,14,buf,0);
getBytes()
替 代getChars()的一種方法是將字符存儲(chǔ)在字節(jié)數(shù)組中,該方法即getBytes()
例:
String s = “Hello!你好!”;
byte[] bytes = s.getBytes();
toCharArray()
例:
String s = “Hello!你好!”;
char[] ss = s.toCharArray();
equals() 和equalsIgnoreCase() 比較兩個(gè)字符串
regionMatches() 用于比較一個(gè)字符串中特定區(qū)域與另一特定區(qū)域,它有一個(gè)重載的形式允許在比較中忽略大小寫(xiě)。
boolean regionMatches(int startIndex,String str2,int
str2StartIndex,int numChars)
boolean regionMatches(boolean ignoreCase,int startIndex,String
str2,int str2StartIndex,int numChars)
startsWith() 和endsWith()
startsWith()方法決定是否以特定字符串開(kāi)始,endWith()方法決定是否以特定字符串結(jié)束
equals() 和==
equals()方法比較字符串對(duì)象中的字符,==運(yùn)算符比較兩個(gè)對(duì)象是否引用同一實(shí)例。
例:String s1=”Hello”;
String s2=new String(s1);
s1.eauals(s2); //true
s1==s2;//false
compareTo() 和compareToIgnoreCase() 比較字符串
indexOf() 和lastIndexOf()
indexOf() 查找字符或者子串第一次出現(xiàn)的地方。
lastIndexOf() 查找字符或者子串是后一次出現(xiàn)的地方。
StringBuffer 構(gòu)造函數(shù)
StringBuffer定義了三個(gè)構(gòu)造函數(shù):
StringBuffer()
StringBuffer(int size)
StringBuffer(String str)
StringBuffer(CharSequence chars)
下面是StringBuffer相關(guān)的函數(shù):
length() 和capacity()
一個(gè)StringBuffer當(dāng)前長(zhǎng)度可通過(guò)length()方法得到,而整個(gè)可分配空間通過(guò)capacity()方法得 到。
ensureCapacity() 設(shè)置緩沖區(qū)的大小
void ensureCapacity(int capacity)
setLength() 設(shè)置緩沖區(qū)的長(zhǎng)度
void setLength(int len)
charAt() 和setCharAt()
char charAt(int where)
void setCharAt(int where,char ch)
getChars()
void getChars(int sourceStart,int sourceEnd,char target[],int targetStart)
append() 可把任何類型數(shù)據(jù)的字符串表示連接到調(diào)用的StringBuffer對(duì)象的末尾。
例:int a=42;
StringBuffer sb=new StringBuffer(40);
String s=sb.append(”a=”).append(a).append(”!”).toString();
insert() 插入字符串
StringBuffer insert(int index,String str)
StringBuffer insert(int index,char ch)
StringBuffer insert(int index,Object obj)
index 指定將字符串插入到StringBuffer對(duì)象中的位置的下標(biāo)。
reverse() 顛倒StringBuffer對(duì)象中的字符
StringBuffer reverse()
delete() 和deleteCharAt() 刪除字符
StringBuffer delete(int startIndex,int endIndex)
StringBuffer deleteCharAt(int loc)
replace() 替換
StringBuffer replace(int startIndex,int endIndex,String str)
substring() 截取子串
String substring(int startIndex)
String substring(int startIndex,int endIndex)
總結(jié)
以上是生活随笔為你收集整理的java字符串函数及理解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: java编程思想-并发思维导图
- 下一篇: MapReduce架构设计