java常用類:String類/可變字串
String類
-
字串時常量,建立後不可改變
常量儲存在字串池中,當新值賦給字串時,沒有修改資料,而是重新開闢一個空間,之前的值就變成了垃圾
-
字串字面值儲存在字串池中,可以共享
每當建立字串常量時,會首先檢查字串池,如果該字串已經存在,那麼就直接返回字串池中的例項引用。
-
字串賦值方式:
-
String s = "Hello";
產生一個物件,字串池中儲存 -
String s = new String("Hello");
產生兩個物件,堆、池各一個
-
常用方法
-
public int length():返回字串長度
-
public char charAt(int index):根據下標獲取字元
-
public boolean contains(String str):判斷當前字串中是否包含str
-
public char[] toCharArray():將字串轉換成陣列
-
public int indexOf(String str):查詢str首次出現的下標,存在,則返回該下標;不存在,則返回-1
int indexOf(String str, int fromIndex) 返回在此字串中第一次出現指定字元處的索引,從指定的索引開始搜尋。
-
public int lastIndexOf(String str):查詢str在當前字串最後一次出現的下標索引
-
public String trim():去掉字串前後的空格
-
public String toUpperCase():將小寫轉成大寫;
public String toLowerCase():將大寫轉成小寫
-
public boolean endWith(String str):判斷字串是否以str結尾
public boolean startsWith(String str):判斷字串是否以str字首開始
-
public String replace(char oldChar, char newChar):將舊字串替換成新字串
-
public String[] split(String str):根據給定正則表示式的匹配拆分此字串
-
boolean equals(Object anObject) 將此字串與指定的物件比較。
boolean equalsIgnoreCase(String anotherString)將此 String 與另一個 String 比較,不考慮大小寫。
-
int compareTo(String anotherString) :按字典順序比較兩個字串。
- 它是先比較對應字元的大小(ASCII碼順序),如果第一個字元和引數的第一個字元不等,結束比較,返回他們之間的差值,如果第一個字元和引數的第一個字元相等,則以第二個字元和引數的第二個字元做比較,以此類推,直至比較的字元或被比較的字元有一方結束。
- 字元相同時比較長度 返回差值
案例演示
-
需求:
已知String str = "this is a text";
- 將str中的單詞單獨獲取
- 將str中的text替換成practice
- 在text前面插入一個easy
- 將每個單詞的首字母改為大寫
public class Demo01 {
public static void main(String[] args){
String str="this is a text";
//1
System.out.println("==========將str中的單詞單獨獲取==========");
String[] arr=str.split(" ");
for (String s:arr)
System.out.println(s);
//2
System.out.println("==========將str中的text替換成practice==========");
String str2=str.replace("text","practice");
System.out.println(str2);
//3
System.out.println("==========在text前面插入一個easy==========");
String str3=str.replace("text","easy text");
System.out.println(str3);
//4
System.out.println("==========將每個單詞的首字母改為大寫==========");
for (int i=0;i<arr.length;i++){
//把第一個字元轉成大寫
char upperfirst = Character.toUpperCase(arr[i].charAt(0));
String news = upperfirst + arr[i].substring(1);
System.out.println(news);
}
}
}
this
is
a
text
==========將str中的text替換成practice==========
this is a practice
==========在text前面插入一個easy==========
this is a easy text
==========將每個單詞的首字母改為大寫==========
This
Is
A
Text
可變字串
-
StringBuffer: 可變長字串,jdk1.0提供,執行效率慢,執行緒安全
-
StringBuilder:可變長字串,jdk5.0提供,執行效率快,執行緒不安全
-
比String效率高
比String節省記憶體
public class Demo01 {
public static void main(String[] args){
//StringBuffer sb=new StringBuffer();
StringBuilder sb=new StringBuilder();
//1.append();追加
sb.append("java");
System.out.println(sb.toString());
sb.append("是最好的語言");
System.out.println(sb.toString());
//2.insert();新增
sb.insert(0,"我在最前面,");
System.out.println(sb.toString());
//3,replace();替換
sb.replace(0,5,"hello");
System.out.println(sb.toString());
//4.delete();刪除
sb.delete(0,6);
System.out.println(sb.toString());
}
}
//結果:
//java
//java是最好的語言
//我在最前面,java是最好的語言
//hello,java是最好的語言
//java是最好的語言