Java語言中,把字符串作為對象來處理,類String和StringBuffer都可以用來表示一個字符串。(類名都是大寫字母打頭)
1.字符串常量
字符串常量是用雙引號括住的一串字符。
"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() ; 生成一個空串
下面用不同方法生成字符串"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個字符的緩沖區*/
- StringBuffer( int len ); /*分配len個字符的緩沖區*/
- StringBuffer( String s ); /*除了按照s的大小分配空間外,再分配16個字符的緩沖區*/
4、訪問字符串
(1)類String中提供了length( )、charAt( )、indexOf( )、lastIndexOf( )、getChars( )、getBytes( )、toCharArray( )等方法。
- public int length() 此方法返回字符串的字符個數
- public char charAt(int index) 此方法返回字符串中index位置上的字符,其中index 值的 范圍是0~length-1
- public int indexOf(int ch)
- public lastIndexOf(in ch)
返回字符ch在字符串中出現的第一個和最後一個的位置
- public int indexOf(String str)
- public int lastIndexOf(String str)
返回子串str中第一個字符在字符串中出現的第一個和最後一個的位置
- public int indexOf(int ch,int fromIndex)
- public lastIndexOf(in ch ,int fromIndex)
返回字符ch在字符串中位置fromIndex以後出現的第一個和最後一個的位置
- public int indexOf(String str,int fromIndex)
- public int lastIndexOf(String str,int fromIndex)
返回子串str中的第一個字符在字符串中位置fromIndex後出現的第一個和最後一個的位置。
- public void getchars(int srcbegin,int end ,char buf[],int dstbegin)
srcbegin 為要提取的第一個字符在源串中的位置, end為要提取的最後一個字符在源串中的位置,字符數組buf[]存放目的字符串,dstbegin 為提取的字符串在目的串中的起始位置。
- public void getBytes(int srcBegin, int srcEnd,byte[] dst, int dstBegin)
參數及用法同上,只是串中的字符均用8位表示。
(2).類StringBuffer提供了 length( )、charAt( )、getChars( )、capacity()等方法。
方法capacity()用來得到字符串緩沖區的容量,它與方法length()所返回的值通常是不同的。
5、修改字符串
修改字符串的目的是為了得到新的字符串,類String和類StringBuffer都提供了相應的方法。有關各個方法的使用,參考Java 2 API。
(1)String類提供的方法:
- public String contat(String str);
用來將當前字符串對象與給定字符串str連接起來。
- public String replace(char oldChar,char newChar);
用來把串中出現的所有特定字符替換成指定字符以生成新串。
- public String substring(int beginIndex);
- public String substring(int beginIndex,int endIndex);
用來得到字符串中指定范圍內的子串。
- public String toLowerCase();
把串中所有的字符變成小寫。
- public String toUpperCase();
把串中所有的字符變成大寫。
(2)StringBuffer類提供的方法:
如果操作後的字符超出已分配的緩沖區,則系統會自動為它分配額外的空間。
- public synchronized StringBuffer append(String str);
用來在已有字符串末尾添加一個字符串str。
- public synchronized StringBuffer insert(int offset, String str);
用來在字符串的索引offset位置處插入字符串str。
- public synchronized void setCharAt(int index,char ch);
用來設置指定索引index位置的字符值。
注意:String中對字符串的操作不是對源操作串對象本身進行的,而是對新生成的一個源操作串對象的拷貝進行的,其操作的結果不影響源串。
相反,StringBuffer中對字符串的連接操作是對源串本身進行的,操作之後源串的值發生了變化,變成連接後的串。
6、其它操作
(1)字符串的比較
String中提供的方法:equals( )和equalsIgnoreCase( )
它們與運算符''= =''實現的比較是不同的。運算符''= =''比較兩個對象是否引用同一個實例,而equals( )和equalsIgnoreCase( )則比較兩個字符串中對應的每個字符值是否相同。
(2)字符串的轉化
Java.lang.Object中提供了方法toString( )把對象轉化為字符串。
(3)字符串"+"操作
運算符''+''可用來實現字符串的連接:
- String s = "He is "+age+" years old.";
其他類型的數據與字符串進行"+"運算時,將自動轉換成字符串。具體過程如下:
- String s=new StringBuffer("he is").append(age).append("years old").toString();
注意:除了對運算符"+"進行了重載外,Java不支持其它運算符的重載