String 類 和StringBuffer(學會使用API)
public final String extends Object
//繼承和修飾
字串是常量,值建立之後不可被更改。字串緩衝區支援可變字串。String物件是不可變的
String str = "hello"; str = "world"; //先在棧裡建立 str 在常量池裡建立“hello”,當更改的時候,建立“world”,改變str的指向,然後hello被回收機制處理 str = str + "world"; //建立“worldworld” str="hello"; //銷燬後再次建立 String str2 = new String(); //一旦建立不可更改,空的,重新賦值要被銷燬,一般不這樣建立
String str = “hello”;
String str1 = "hello";
System.out.println(str==str1);
//輸出結果為true,地址可共享
String str = new String("hello”);
String str1 = "hello";
syso(str == str1);
//結果為false
//str2 先在堆裡建立了new String(),str1在常量池建立 hello 比較的地址是 new String()和hello,所以說地址不一樣。
String(char[] value)
char[] ch = {'h','e','l','l','o'}; String str = new String (ch);
String(char[] value , int offset , int count)
offset 是字串當成陣列後的索引
count 是從offset開始一共的字元個數
String str = “hello”;
String str1 = new String(str,1,3);
syso
// ell
String (byte[] byte)
byte[] by = {65,66,67};
String str = new String(by);
syso(str);
// abc
//按照ascii碼錶轉化
String(byte[] byte,int offset,int count);
和 String(char[] value , int offset , int count);類似
String(byte[] byte , charset charset);
charset 是編碼格式,(GBK,UTF-8,ISO-8859-1等),資料庫使用
String str = “hello”;
str+=“world”;
syso(str);
//輸出三個字串
方法
判斷功能
equals(String str)區分字串的內容是否相同,區分大小寫
equalsIgnoreCase(String str) 不區分大小寫
contains(String str) 判斷一個字串裡是夠包含另外一個字串 區分大小寫
startsWith(String str)判斷字串是否已指定的字串開頭
endsWith(String str)判斷字串是否以指定的字串結尾
isEmpty(String str)判斷是否為空 ,寫null會報異常
獲取功能
length() 長度
charAt(int index)索引所在的字元
indexOf(String str)判斷字元所在索引
indexOf(String str , fromIndex)
- 前閉後開 10 <= a <20
String str = “hellohello”;
syso(“h”,3);
//從索引開始判斷
字串剪下
helloworldjavac++
substring(int beginIndex) 返回一個新的字串,它是此字串的一個子字串。該子字串從指定索引處的字元開始,直到此字串末尾。
substring(int beginIndex, int endIndex)
beginIndex - 起始索引(包括)。
endIndex - 結束索引(不包括)。
字串轉化功能
getBytes();
toCharArray();
valueOf();
public class Demo {
public static void main(String[] args) {
String str = "hello";
byte[] bytes = str.getBytes();
//轉換位元組陣列,位元組是數字
for(int i = 0 ; i<bytes.length ; i++){
System.out.print((char)bytes[i]);//bytes[i] 輸出的是ascii碼,要強制轉換
}
System.out.println();
//轉換字元陣列
char[] charArray = str.toCharArray();
for(int i = 0 ; i<bytes.length ; i++){
System.out.print(charArray[i]);
}
int a = 10;
String st = a+" ";
String st1 = String.valueOf(a);//valueOf是靜態方法,直接類名呼叫
}
}
StringBuffer
執行緒安全的可變字元序列
public StringBuffer()
構造一個其中不帶字元的字串緩衝區,起初始容量為16個字元
public StringBuffer(int capacity)
構造一個不帶字元,單具有出事容量的字串緩衝區
public StringBuffer(String str)
構造一個字串緩衝區,並將其內容初始化,該字串的初始容量為 16 加上字串引數的長度。
功能方法
-
length() 得到的是實際的字串長度
-
capacity()得到的是理論的字串長度
- 新增功能
-
append() 追加 到末尾
-
insert(int offset,String str) 在指定的位置插入一個字串物件
- 刪除功能
-
delete(int start , int end) 在字串中刪除指定位置開始 到指定位置結束的字串序列
-
helloworldjava 前閉後開
-
deleteCharAt(int index); 刪除指定位置的字元
- 翻轉功能
-
reverse()
- 替換功能
-
replace(start, end, str) 前閉後開
- 擷取功能
-
substring
- String 和StringBuffer 轉換
-
用的構造
- StringBuffer sf =new StringBuffer(“hello”);
- String str = new Stirng(sf);
- 字串轉換功能
-
getBytes() 將一個字串轉換成位元組陣列
-
toCharArray()將一個字串轉換成字元陣列
-
valueOf( ? ) 將指定的內容轉換成字元轉
-
字串的大小轉換
-
toLowerCase() 將字串都轉換成小寫
-
toUpperCase() 將字串都轉換成大寫
- 字串的其他方法
- 去除兩端空格
- trim