java提供兩個類來操作字符串:String和StringBuffer。
如果處理一些小的文本建議使用String類;處理大型文本使用StringBuffer類。
聲明字符串變量:String name;
初始化字符串變量:name = "lixiansheng";
String類:
String類的內容和長度不可變,如果對字符串進行操作則會生成一個新的實例,不會改變對象實例本身。系統為String類對象分配內存時,是按照當前對象所包含的實際字符數分配的。
StringBuffer類:
StringBuffer類處理可變字符串,如果要修改一個StringBuffer類的字符串,不需要再創建新的字符串對象,而是直接操作原有字符串。系統為StringBuffer對象分配內存時,除了當前字符所占空間外,還提供一個16字符大小的緩沖區。
String類處理字符串
1.字符串類的默認構造器:
“String()”是最簡單的構造器,也是系統默認的構造器,是不帶參數的。
String name = new String(); //創建一個空的字符串
2.字節參數的構造器
String(byte[] byte)將字節數組中的元素作為字符串對象。
byte[] byte = {97, 98, 99};
String str = new String(byte);
輸出結果為: abc
3.獲取指定字節數的構造器
String(byte[], int begin, int length) 含義為:將字節數組中從“begin”指定位置開始到“length”長度結束,獲取其中間的元素作為字符串對象。 注意數組是從0開始的。
byte[] byte = {97,98,99,100,101,102};
String str = new String(byte, 3, 2);
輸出結果為: de
4.將字節型數據轉換為字符集輸出的構造器
String(byte[] byte, int begin, int length, String chatsName) 含義為:獲取字節數組中從第“begin”開始到“length”長度結束字符,形成字符串對象,然后按照“charname”字符集輸出。
字符集一般有:“us-ascii”, "iso-8859-1","utf-8","utf-16be","utf-16le","utf-16"等樣式。
byte[] byte = {97,98,99,100,101,102};
String str = new String(byte, 3, 2, "utf-8");
輸出結果為: de
5.字符數組構造器
String(char[], int begin, int length) 含義為:將字節數組中從“begin”指定位置開始到“length”長度結束,獲取其中間的字符連城字符串。 注意數組是從0開始的。
char[] char = {"w", "e", "l", "c", "o", "m", "e"};
String str = new String(char, 3, 4); //從3開始,截取4位
輸出結果為: come
String類字符串處理方法
主要講:字符串鏈接 提取子串 從字符串中提取一個指定的字符 字符串長度 檢查字符串是否相等 查找特定字符串 從基本類型轉換成字符串等
1.字符串鏈接
有兩種方法鏈接字符串:一是使用“+”,另一種是使用方法函數concat(String str).
String str1 = "I am"; String str2 = "a tester!"; //使用"+" System.out.println(str1 + " " + str2); //使用concat System.out.println(str1.concat(" ").concat(str2)); 輸出結果: I am a tester! I am a tester!
2.提取子字符串
1)“substring(int index)” 是提取從index指定的位置開始,一直到字符串最后。
2)“substring(int begin, int end)" 是提取從begin到end位置的字符串。
public static void main(String[] args) { String str1 = "I am a tester!"; //substring(int index) System.out.println(str1.substring(7)); //substring(int begin, int end) System.out.println(str1.substring(5,12)); } 輸出結果: tester! a teste
3.從字符串中提取一個指定字符
charAt(int index),這個方法返回的是一個字符。
public static void main(String[] args) { String str1 = "I am a tester!"; //獲取位置為3的字符 System.out.println(str1.charAt(3)); } 輸出結果: m
4.獲取字符串長度
str.length().返回字符串長度,類型為int。注意字符串長度length()是方法,數組長度length是屬性。
public static void main(String[] args) { String str1 = "I am a tester!"; //獲取長度 System.out.println(str1.length()); } 輸出結果: 14
5.檢查字符串是否相等
str.equals(str1) 返回true或者false
str.equalsIgnoreCase(str) 這個方法忽略字符串大小寫
public static void main(String[] args) { String str1 = "tester"; String str2 = "tester"; String str3 = "Tester"; System.out.println(str1.equals(str2)); System.out.println(str1.equals(str3)); System.out.println(str1.equalsIgnoreCase(str3)); } 輸出結果: true false true
6.查找特定字符
1)indexOf(子串內容) 子串如果存在str內,則返回首位子串的位置,如子串“sdf”則返回“s”位置;如子串不存在str內,返回負數。
2)startsWith(子串內容) 測試字符串是否是子串開頭。
3)endsWith(子串內容)測試字符串是否是子串結尾。
public static void main(String[] args) { String str1 = "tester"; System.out.println(str1.indexOf("es")); System.out.println(str1.indexOf("esd")); System.out.println(str1.startsWith("te")); System.out.println(str1.startsWith("a")); System.out.println(str1.endsWith("er")); System.out.println(str1.endsWith("A")); } 輸出結果: 1 -1 true false true false
7.從基本類型轉換成字符串
valueOf() 將基本類型數據轉換成相應的字符串
int str2= 123;
String str3 = String.valueOf(str2);
StringBuffer緩存字符串處理類
1.默認構造器
public static void main(String[] args) { StringBuffer str = new StringBuffer(); System.out.println(str.length()); //輸出字符串長度 System.out.println(str.capacity()); //輸出字符串容量 } 輸出結果: 0 16
2.設定容量大小的構造器
StringBuffer str = new StringBuffer(int x);
擴容:str.ensureCapacity(int x);
public static void main(String[] args) { StringBuffer str = new StringBuffer(10); System.out.println(str.length()); //輸出字符串長度 System.out.println(str.capacity()); //輸出字符串容量 str.ensureCapacity(40); System.out.println(str.length()); System.out.println(str.capacity()); } 輸出結果: 0 10 0 40
3.處理緩存字符串
1)初始化字符串
public static void main(String[] args) { StringBuffer str = new StringBuffer("老李是名優秀的測試"); str.append("工程師"); //添加到末尾 System.out.println(str); str.setLength(2);//設置字符串長度 System.out.println(str); } 輸出結果: 老李是名優秀的測試工程師 老李
2)取字符串的單個字符
str.charAt(int index)
StringBuffer str = new StringBuffer("老李是名優秀的測試"); System.out.println(str.charAt(3)); 輸出結果: 名
3)單個字符賦值
str.setCharAt(int index,'字符');
public static void main(String[] args) { StringBuffer str = new StringBuffer("老李是名優秀的測試"); str.setCharAt(0,'小'); System.out.println(str); } 輸出結果: 小李是名優秀的測試
4)指定位置插入字符串
str.insert(int index, str)
public static void main(String[] args) { StringBuffer str = new StringBuffer("老李是名優秀的測試"); str.insert(9,"工程師"); System.out.println(str); } 輸出結果: 老李是名優秀的測試工程師
5)返回字符串子串
str.substring(int index)
public static void main(String[] args) { StringBuffer str = new StringBuffer("老李是名優秀的測試"); System.out.println(str.substring(7)); } 輸出結果: 測試
6)倒置字符串內容
str.reverse()
public static void main(String[] args) { StringBuffer str = new StringBuffer("老李是名優秀的測試"); System.out.println(str.reverse()); } 輸出結果: 試測的秀優名是李老