String類的概述 String 類代表字元串。Java 程式中的所有字元串字面值(如 "abc" )都作為此類的實例實現。字元串是常量,一旦被賦值,就不能被改變。 String類的構造方法 * public String():空構造 * public String(byte[] bytes):把 ...
String類的概述
String
類代表字元串。Java 程式中的所有字元串字面值(如 "abc"
)都作為此類的實例實現。
字元串是常量,一旦被賦值,就不能被改變。
String類的構造方法
* 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類的常見面試題
1.判斷定義為String類型的s1和s2是否相等
* String s1 = "abc";
* String s2 = "abc";
* System.out.println(s1 == s2);
* System.out.println(s1.equals(s2));
== 比較的是對象地址,equals對比的是值。都為true。String s1 = "abc" 存儲在常量池 中,常量池的特點是如果沒有就創建,如果已經有了,則不創建,所以s1和s2是同一個對象。
2.下麵這句話在記憶體中創建了幾個對象?
* String s1 = new String("abc");
兩個,第一個在常量池中,第二個在堆中。
3.判斷定義為String類型的s1和s2是否相等
* String s1 = new String("abc");
* String s2 = "abc";
* System.out.println(s1 == s2);
* System.out.println(s1.equals(s2));
由第二題可知,第一個是false,第二個是true。
4.判斷定義為String類型的s1和s2是否相等
* String s1 = "a" + "b" + "c";
* String s2 = "abc";
* System.out.println(s1 == s2);
* System.out.println(s1.equals(s2));
兩個都是true。第一個因為Java有常量優化機制,在編譯階段就直接是“abc”了。
5.判斷定義為String類型的s1和s2是否相等
* String s1 = "ab";
* String s2 = "abc";
* String s3 = s1 + "c";
* System.out.println(s3 == s2);
* System.out.println(s3.equals(s2));
第一個是為false,第二個為true。第一句和第二句分別在常量池中創建常量“ab”,“abc”,第三句代碼中的+是通過 StringBuffer的append方法將s1和“c”連接起來,再通過toString方法轉換成String對象,是在堆中的一個新對象,與常量池中的s2不同。
String類的判斷功能
* boolean equals(Object obj):比較字元串的內容是否相同,區分大小寫
* boolean equalsIgnoreCase(String str):比較字元串的內容是否相同,忽略大小寫
* boolean contains(String str):判斷大字元串中是否包含小字元串
* boolean startsWith(String str):判斷字元串是否以某個指定的字元串開頭
* boolean endsWith(String str):判斷字元串是否以某個指定的字元串結尾
* boolean isEmpty():判斷字元串是否為空。
String類的獲取功能
* int length():獲取字元串的長度。
* char charAt(int index):獲取指定索引位置的字元
* int indexOf(int ch):返回指定字元在此字元串中第一次出現處的索引。
* int indexOf(String str):返回指定字元串在此字元串中第一次出現處的索引。
* int indexOf(int ch,int fromIndex):返回指定字元在此字元串中從指定位置後第一次出現處的索引。
* int indexOf(String str,int fromIndex):返回指定字元串在此字元串中從指定位置後第一次出現處的索引。
* lastIndexOf
* String substring(int start):從指定位置開始截取字元串,預設到末尾。
* String substring(int start,int end):從指定位置開始到指定位置結束截取字元串。
案例演示1:遍歷字元串
public static void main(String[] args) { String s = "heima"; for(int i = 0; i < s.length(); i++) { System.out.println(s.charAt(i)); } }
案例演示2:統計不同類型字元個數
* 需求:統計一個字元串中大寫字母字元,小寫字母字元,數字字元出現的次數,其他字元出現的次數。
* ABCDEabcd123456!@#$%^
public static void main(String[] args) { String s = "ABCDEabcd123456!@#$%^"; int big = 0; int small = 0; int num = 0; int other = 0; //1,獲取每一個字元,通過for迴圈遍歷 for(int i = 0; i < s.length(); i++) { char c = s.charAt(i); //通過索引獲取每一個字元 //2,判斷字元是否在這個範圍內 if(c >= 'A' && c <= 'Z') { big++; //如果滿足是大寫字母,就讓其對應的變數自增 }else if(c >= 'a' && c <= 'z') { small++; }else if(c >= '0' && c <= '9') { num++; }else { other++; } } //3,列印每一個計數器的結果 System.out.println(s + "中大寫字母有:" + big + "個,小寫字母有:" + small + "個,數字字元:" + num + "個,其他字元:" + other + "個"); }
String的轉換功能
* 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 s = "woaiHEImaniaima"; String s2 = s.substring(0, 1).toUpperCase().concat(s.substring(1).toLowerCase()); System.out.println(s2); }
String類的其他功能
* String replace(char old,char new)
* String replace(String old,String new)
* String trim()
字元串反轉
* 需求:把字元串反轉
* 舉例:鍵盤錄入"abc"
* 輸出結果:"cba"
public static void main(String[] args) { Scanner sc = new Scanner(System.in); //創建鍵盤錄入對象 System.out.println("請輸入一個字元串:"); String line = sc.nextLine(); //將鍵盤錄入的字元串存儲在line中 char[] arr = line.toCharArray(); //將字元串轉換為字元數組 String s = ""; for(int i = arr.length-1; i >= 0; i--) { //倒著遍歷字元數組 s = s + arr[i]; //拼接成字元串 } System.out.println(s); }
在大串中查找小串出現的次數代碼實現
* 統計大串中小串出現的次數
public static void main(String[] args) { //定義大串 String max = "woaiheima,heimabutongyubaima,wulunheimahaishibaima,zhaodaogongzuojiushihaoma"; //定義小串 String min = "heima"; //定義計數器變數 int count = 0; //定義索引 int index = 0; //定義迴圈,判斷小串是否在大串中出現 while((index = max.indexOf(min)) != -1) { count++; //計數器自增 max = max.substring(index + min.length()); } System.out.println(count); }