Java常用類:String
阿新 • • 發佈:2022-03-27
String
- 字串是常量,建立之後不可改變,修改變數的賦值不是修改字串,而是將變數指向新建立的字串
- 字串字面值存在字串池中,可以共享,JDK8後字串池在堆中
- 建立字串變數:
-
String s = "H";
產生一個物件,字串池中儲存 -
String s = new String("H");
產生兩個物件,堆、池中各儲存一個。堆中儲存new的物件,指向字串池的字串,浪費空間
-
- 在對字串進行比較時使用
equals()
,String重寫了equals方法
String str = new String("H"); String str2 = new String("H"); System.out.println(str==str2);//false,比較的是物件的地址 System.out.println(str.equals(str2));//true,比較字串的內容
常用方法
-
length()
:返回字串的長度
test.length()//10
-
charAt(int index)
:返回某個位置的字元,下標越界會報錯
test.charAt(4)//是
-
contains(String str)
:是否包含某個字串
test.contains("java")//true
-
toCharArray()
:將字串轉換成陣列
Arrays.toString(test.toCharArray();//[j, a, v, a, 是, 最, 好, 的, 語, 言]
-
indexOf(String str, n)
:(從索引n開始)查詢str首次出現的下標,存在返回下標,不存在返回-1
test.indexOf("java")//0
-
LastIndexOf(String str, n)
:(從索引n開始)查詢str最後一次出現的下標,存在返回下標,不存在返回-1
test.lastIndexOf("b")//-1
-
trim()
:去掉字串前後的空格 -
toUpperCase()
:小寫轉大寫 -
toLowerCase()
:大寫轉小寫 -
endWith(String str)
:判斷字串是否以str結尾 -
startWith(String str)
:判斷是否以str開頭 - replace(char oldChar, char newChar):將舊字串替換成新字串
test.replace("java","python")//python是最好的語言
-
split(String str)
:根據str做拆分-
spilt(" ")
:按照空格拆分 -
[]
表示選擇其中的內容,可以用[]
中的其中一個內容進行拆分 -
+
代表切分符號可以出現多個但只切分一次
-
String s = "java is the best programing language, php not";
String[] arr = s.split("[ ,]+");//[]表示選擇其中的內容,可以用空格或逗號拆分;+代表切分符號可以出現多個但只切分一次
for (String string : arr) {
System.out.println(string);
}
//輸出
java
is
the
best
programing
language
php
not
-
equals()
:比較字串的內容是否相同 -
equalsIgnoreCase()
:忽略大小寫的比較 -
compareTo()
:按照字典表的順序比較大小
String s3 = "xdfg";
String s4 = "asdzb";
System.out.println(s3.compareTo(s4));//23首字母的序號差值,正數則s3>s4
當進行比較的兩個字串的長度不同,但較短的字串的內容和較長的前部完全相同時,比較的是字串的長度
String s5 = "asd";
String s6 = "asdfg";
System.out.println(s5.compareTo(s6));//-2,返回值是字元的長度差,相等時為0
-
substring(int beginIndex, int endIndex)
:切片
可變字串
-
StringBuffer
:可變長字串,JDK1,執行效率慢,執行緒安全 -
StringBuilder
:可邊長字串,JDK5,執行效率快,執行緒不安全 - 和
String
的區別:- 效率更高
- 節省記憶體
方法(StringBuffer和StringBuilder通用)
-
append(內容)
:追加各種型別的內容 -
insert(int offset, 內容)
:在指定索引處插入內容 -
replace(int start, int end, 替換內容)
:在指定位置進行替換 -
delete(int start, int end)
:刪除索引中的內容 -
delete(0, str.length())
:清空內容
效率驗證
public static void main(String[] args) {
//開始時間
long start = System.currentTimeMillis();
//String 312
// String string = "";
// for (int i = 0; i < 9999; i++) {
// string+=i;
// }
// System.out.println(string);
//StringBuilder:3
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 9999; i++) {
sb.append(i);
}
System.out.println(sb.toString());
long end = System.currentTimeMillis();
System.out.println("用時:"+(end-start));
}