String 類 定義 String 類代表字元串。Java 程式中的所有字元串字面值(如 "abc" )都作為此類的實例實現。我們可以將字元串看作是String, 但是嚴格意義上來說, String還是一個類,只是比較特殊罷了 特殊性 String 類型的變數可以引用地址 String 類型的變數 ...
String 類
-
定義
- String 類代表字元串。Java 程式中的所有字元串字面值(如 "abc" )都作為此類的實例實現。我們可以將字元串看作是String, 但是嚴格意義上來說, String還是一個類,只是比較特殊罷了
-
特殊性
- String 類型的變數可以引用地址
- String 類型的變數可以直接指向常量
- String 對象的長度是不可變的,如果兩個字元串拼接成一個字元串,其實是創建了一個新的字元串對象
public static void main(String[] args) { String str = new String();// 指向地址值 new對象相當於指向一個新地址 String str2 = "abc"; //指向常量 }
-
常用的構造方法
- public String():空構造
- public String(byte[] bytes):把位元組數組轉成字元串
- public String(byte[] bytes,int index,int length):把位元組數組的一部分轉成字元串
- public String(char[] value):把字元數組轉成字元串
- public String(char[] value,int index,int count):把字元數組的一部分轉成字元串
- public String(String original):把字元串常量值轉成字元串
- 測試題
- 判斷定義為String類型的s1和s2是否相等?
- String s1 = "abc";
- String s2 = "abc";
- System.out.println(s1 == s2);
- System.out.println(s1.equals(s2));
- 下麵這句話在記憶體中創建了幾個對象?
- String s1 = new String("abc");
- 答案: 創建了兩個看對象,一個在常量池,一個在堆記憶體
- String s1 = new String("abc");
- 判斷定義為String類型的s1和s2是否相等
- String s1 = new String("abc");
- String s2 = "abc";
- System.out.println(s1 == s2);
- System.out.println(s1.equals(s2));
- 判斷定義為String類型的s1和s2是否相等?
- String s1 = "a" + "b" + "c";
- String s2 = "abc";
- System.out.println(s1 == s2);
- System.out.println(s1.equals(s2));
- 判斷定義為String類型的s1和s2是否相等?
- String s1 = "ab";
- String s2 = "abc";
- String s3 = s1 + "c";
- System.out.println(s3 == s2);
- System.out.println(s3.equals(s2));
- 判斷定義為String類型的s1和s2是否相等?
-
常用的判斷方法
-
boolean equals(Object obj): 比較字元串的內容是否相同,區分大小寫
-
boolean equalsIgnoreCase(String str): 比較字元串的內容是否相同,忽略大小寫
-
boolean contains(String str): 判斷大字元串中是否包含小字元串
-
boolean startsWith(String str): 判斷字元串是否以某個指定的字元串開頭
-
boolean endsWith(String str): 判斷字元串是否以某個指定的字元串結尾
-
boolean isEmpty(): 判斷字元串是否為空
-
案例
- 需求:模擬登錄,給三次機會,並提示還有幾次。
- 用戶名和密碼都是admin
public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int i = 1; while(i<=3){ System.out.println("請輸入用戶名"); String name = scanner.nextLine(); System.out.println("請輸入密碼"); String password = scanner.nextLine(); if("admin".equals(name)&&"admin".equals(password)){ System.out.println("恭喜您,登錄成功"); break; } System.out.println("用戶名或密碼錯誤,請您重新輸入,您還有"+(3-i)+"次機會機會"); i++; } scanner.close(); }
-
測試題
- 查詢一個某個班級中所有姓張的學生
- String[] strs = {"李張蛋","張三","張飛","李偉","劉明"};
-
-
常用的獲取方法
-
int length(): 獲取字元串的長度
-
char charAt(int index): 獲取指定索引位置的字元
-
int indexOf(int ch): 返回指定字元在此字元串中第一次出現處的索引, ch是字元的碼表值
-
int indexOf(String str): 返回指定字元串在此字元串中第一次出現處的索引
-
int indexOf(int ch,int fromIndex): 返回指定字元在此字元串中從指定位置後第一次出現處的索引
-
int indexOf(String str,int fromIndex): 返回指定字元串在此字元串中從指定位置後第一次出現處的索引
-
int lastIndexOf 同上
-
String substring(int start):從指定位置開始截取字元串,預設到末尾
-
String substring(int start,int end):從指定位置開始到指定位置結束截取字元串
-
案例
- 需求:遍歷字元串
public static void main(String[] args) { String str = "abcdkekdkgallsd"; for (int i = 0; i < str.length(); i++) { System.out.println(str.charAt(i)); } }
-
測試題
- 需求:不准使用charAt(),遍歷字元串
-
-
常用的轉換方法
-
byte[] getBytes(): 把字元串轉換為位元組數組
-
char[] toCharArray():把字元串轉換為字元數組
-
static String valueOf(char[] chs):把字元數組轉成字元串
-
static String valueOf(int i):把int類型的數據轉成字元串
-
註意:String類的valueOf方法可以把任意類型的數據轉成字元串
-
String toLowerCase():把字元串轉成小寫(瞭解)
-
String toUpperCase():把字元串轉成大寫
-
String concat(String str):把字元串拼接
-
案例
- 需求:把一個字元串的首字母轉成大寫,其餘為小寫
public static void main(String[] args) { String str = "abCdkeHgDlsd"; String str2 = str.substring(0,1).toUpperCase().concat(str.substring(1).toLowerCase()); System.out.println(str2); }
-
-
替換方法
- String replace(char old,char new) : 將字元串中的一部分字元用新的代替
- String replace(String old,String new) : 將字元串中的一部分字元串用新的代替
-
切割方法
- String[] split(String regex) : 按照規則來切割字元串
- String[] split(String regex, int limit) : 按照規則來切割字元串 limit 表示總共切成幾段(也就是數組的長度)
-
其他常用方法
- trim() : 去除字元串前後的空格
- int compareTo(String anotherString) : 按字典順序比較兩個字元串(大小寫)
- int compareToIgnoreCase(String str) : 按字典順序比較兩個字元串(忽略大小)