詳細(xì)介紹JAVA中的字符串
Java語(yǔ)言中,把字符串作為對(duì)象來(lái)處理,類String和StringBuffer都可以用來(lái)表示一個(gè)字符串。(類名都是大寫字母打頭)
1.字符串常量
字符串常量是用雙引號(hào)括住的一串字符。
"Hello World!"
2.String表示字符串常量
用String表示字符串:
- String( char chars[ ] );
- String( char chars[ ], int startIndex, int numChars );
- String( byte ascii[ ], int hiByte );
- String( byte ascii[ ], int hiByte, int startIndex, int numChars );
String使用示例:
- String s=new String() ; 生成一個(gè)空串
下面用不同方法生成字符串"abc":
- char chars1[]={''a'',''b'',''c''};
- char chars2[]={''a'',''b'',''c'',''d'',''e''};
- String s1=new String(chars1);
- String s2=new String(chars2,0,3);
- byte ascii1[]={97,98,99};
- byte ascii2[]={97,98,99,100,101};
- String s3=new String(ascii1,0);
- String s4=new String(ascii2,0,0,3);
3.用StringBuffer表示字符串
- StringBuffer( ); /*分配16個(gè)字符的緩沖區(qū)*/
- StringBuffer( int len ); /*分配len個(gè)字符的緩沖區(qū)*/
- StringBuffer( String s ); /*除了按照s的大小分配空間外,再分配16個(gè)字符的緩沖區(qū)*/
4、訪問(wèn)字符串
(1)類String中提供了length( )、charAt( )、indexOf( )、lastIndexOf( )、getChars( )、getBytes( )、toCharArray( )等方法。
- public int length() 此方法返回字符串的字符個(gè)數(shù)
- public char charAt(int index) 此方法返回字符串中index位置上的字符,其中index 值的 范圍是0~length-1
- public int indexOf(int ch)
- public lastIndexOf(in ch)
返回字符ch在字符串中出現(xiàn)的第一個(gè)和最后一個(gè)的位置
- public int indexOf(String str)
- public int lastIndexOf(String str)
返回子串str中第一個(gè)字符在字符串中出現(xiàn)的第一個(gè)和最后一個(gè)的位置
- public int indexOf(int ch,int fromIndex)
- public lastIndexOf(in ch ,int fromIndex)
返回字符ch在字符串中位置fromIndex以后出現(xiàn)的第一個(gè)和最后一個(gè)的位置
- public int indexOf(String str,int fromIndex)
- public int lastIndexOf(String str,int fromIndex)
返回子串str中的第一個(gè)字符在字符串中位置fromIndex后出現(xiàn)的第一個(gè)和最后一個(gè)的位置。
- public void getchars(int srcbegin,int end ,char buf[],int dstbegin)
srcbegin 為要提取的第一個(gè)字符在源串中的位置, end為要提取的最后一個(gè)字符在源串中的位置,字符數(shù)組buf[]存放目的字符串,dstbegin 為提取的字符串在目的串中的起始位置。
- public void getBytes(int srcBegin, int srcEnd,byte[] dst, int dstBegin)
參數(shù)及用法同上,只是串中的字符均用8位表示。
(2).類StringBuffer提供了 length( )、charAt( )、getChars( )、capacity()等方法。
方法capacity()用來(lái)得到字符串緩沖區(qū)的容量,它與方法length()所返回的值通常是不同的。
5、修改字符串
修改字符串的目的是為了得到新的字符串,類String和類StringBuffer都提供了相應(yīng)的方法。有關(guān)各個(gè)方法的使用,參考java 2 API。
(1)String類提供的方法:
- concat( )
- replace( )
- substring( )
- toLowerCase( )
- toUpperCase( )
- public String contat(String str);
用來(lái)將當(dāng)前字符串對(duì)象與給定字符串str連接起來(lái)。
- public String replace(char oldChar,char newChar);
用來(lái)把串中出現(xiàn)的所有特定字符替換成指定字符以生成新串。
- public String substring(int beginIndex);
- public String substring(int beginIndex,int endIndex);
用來(lái)得到字符串中指定范圍內(nèi)的子串。
- public String toLowerCase();
把串中所有的字符變成小寫。
- public String toUpperCase();
把串中所有的字符變成大寫。
(2)StringBuffer類提供的方法:
- append( )
- insert( )
- setCharAt( )
如果操作后的字符超出已分配的緩沖區(qū),則系統(tǒng)會(huì)自動(dòng)為它分配額外的空間。
- public synchronized StringBuffer append(String str);
用來(lái)在已有字符串末尾添加一個(gè)字符串str。
- public synchronized StringBuffer insert(int offset, String str);
用來(lái)在字符串的索引offset位置處插入字符串str。
- public synchronized void setCharAt(int index,char ch);
用來(lái)設(shè)置指定索引index位置的字符值。
注意:String中對(duì)字符串的操作不是對(duì)源操作串對(duì)象本身進(jìn)行的,而是對(duì)新生成的一個(gè)源操作串對(duì)象的拷貝進(jìn)行的,其操作的結(jié)果不影響源串。
相反,StringBuffer中對(duì)字符串的連接操作是對(duì)源串本身進(jìn)行的,操作之后源串的值發(fā)生了變化,變成連接后的串。
6、其它操作
(1)字符串的比較
String中提供的方法:equals( )和equalsIgnoreCase( )
它們與運(yùn)算符''= =''實(shí)現(xiàn)的比較是不同的。運(yùn)算符''= =''比較兩個(gè)對(duì)象是否引用同一個(gè)實(shí)例,而equals( )和equalsIgnoreCase( )則比較兩個(gè)字符串中對(duì)應(yīng)的每個(gè)字符值是否相同。
(2)字符串的轉(zhuǎn)化
java.lang.Object中提供了方法toString( )把對(duì)象轉(zhuǎn)化為字符串。
(3)字符串"+"操作
運(yùn)算符''+''可用來(lái)實(shí)現(xiàn)字符串的連接:
- String s = "He is "+age+" years old.";
其他類型的數(shù)據(jù)與字符串進(jìn)行"+"運(yùn)算時(shí),將自動(dòng)轉(zhuǎn)換成字符串。具體過(guò)程如下:
- String s=new StringBuffer("he is").append(age).append("years old").toString();
注意:除了對(duì)運(yùn)算符"+"進(jìn)行了重載外,java不支持其它運(yùn)算符的重載。
【編輯推薦】