字串的比較、獲取、擷取、轉換、分割方法---Java
String當中與比較相關的常用方法有:
==是進行物件的地址值比較,如果確實需要字串的內容比較,可以使用兩個方法:
public boolean equals(Object obj):引數可以是任何物件,只有引數是一個字串並且內容相同的才會給true;否則返回false。
注意事項:
1. 任何物件都能用Object進行接收。
2. equals方法具有對稱性,也就是a.equals(b)和b.equals(a)效果一樣。
3. 如果比較雙方一個常量一個變數,推薦把常量字串寫在前面。
推薦:"abc".equals(str) 不推薦:str.equals("abc")
public boolean
1 public class Demo01StringEquals { 2 3 public static void main(String[] args) { 4 String str1 = "Hello"; 5 String str2 = "Hello"; 6 char[] charArray = {'H', 'e', 'l', 'l', 'o'}; 7 String str3 = new String(charArray);比較8 9 System.out.println(str1.equals(str2)); // true 10 System.out.println(str2.equals(str3)); // true 11 System.out.println(str3.equals("Hello")); // true 12 System.out.println("Hello".equals(str1)); // true 13 14 String str4 = "hello"; 15 System.out.println(str1.equals(str4)); //false 16 System.out.println("================="); 17 18 String str5 = null; 19 System.out.println("abc".equals(str5)); // 推薦:false 20 // System.out.println(str5.equals("abc")); // 不推薦:報錯,空指標異常NullPointerException 21 System.out.println("================="); 22 23 String strA = "Java"; 24 String strB = "java"; 25 System.out.println(strA.equals(strB)); // false,嚴格區分大小寫 26 System.out.println(strA.equalsIgnoreCase(strB)); // true,忽略大小寫 27 28 // 注意,只有英文字母區分大小寫,其他都不區分大小寫 29 System.out.println("abc一123".equalsIgnoreCase("abc壹123")); // false 30 } 31 32 }
String當中與獲取相關的常用方法有:
public int length():獲取字串當中含有的字元個數,拿到字串長度。
public String concat(String str):將當前字串和引數字串拼接成為返回值新的字串。
public char charAt(int index):獲取指定索引位置的單個字元。(索引從0開始。)
public int indexOf(String str):查詢引數字串在本字串當中首次出現的索引位置,如果沒有返回-1值。
1 public class Demo02StringGet { 2 3 public static void main(String[] args) { 4 // 獲取字串的長度 5 int length = "asdasfeutrvauevbueyvb".length(); 6 System.out.println("字串的長度是:" + length); 7 8 // 拼接字串 9 String str1 = "Hello"; 10 String str2 = "World"; 11 String str3 = str1.concat(str2); 12 System.out.println(str1); // Hello,原封不動 13 System.out.println(str2); // World,原封不動 14 System.out.println(str3); // HelloWorld,新的字串 15 System.out.println("=============="); 16 17 // 獲取指定索引位置的單個字元 18 char ch = "Hello".charAt(1); 19 System.out.println("在1號索引位置的字元是:" + ch); 20 System.out.println("=============="); 21 22 // 查詢引數字串在本來字串當中出現的第一次索引位置 23 // 如果根本沒有,返回-1值 24 String original = "HelloWorldHelloWorld"; 25 int index = original.indexOf("llo"); 26 System.out.println("第一次索引值是:" + index); // 2 27 28 System.out.println("HelloWorld".indexOf("abc")); // -1 29 } 30 31 }獲取
字串的擷取方法:
public String substring(int index):擷取從引數位置一直到字串末尾,返回新字串。
public String substring(int begin, int end):擷取從begin開始,一直到end結束,中間的字串。
備註:[begin,end),包含左邊,不包含右邊。
1 public class Demo03Substring { 2 3 public static void main(String[] args) { 4 String str1 = "HelloWorld"; 5 String str2 = str1.substring(5); 6 System.out.println(str1); // HelloWorld,原封不動 7 System.out.println(str2); // World,新字串 8 System.out.println("================"); 9 10 String str3 = str1.substring(4, 7); 11 System.out.println(str3); // oWo 12 System.out.println("================"); 13 14 // 下面這種寫法,字串的內容仍然是沒有改變的 15 // 下面有兩個字串:"Hello","Java" 16 // strA當中儲存的是地址值。 17 // 本來地址值是Hello的0x666, 18 // 後來地址值變成了Java的0x999 19 String strA = "Hello"; 20 System.out.println(strA); // Hello 21 strA = "Java"; 22 System.out.println(strA); // Java 23 } 24 25 }擷取
String當中與轉換相關的常用方法有:
public char[] toCharArray():將當前字串拆分成為字元陣列作為返回值。
public byte[] getBytes():獲得當前字串底層的位元組陣列。
public String replace(CharSequence oldString, CharSequence newString):
將所有出現的老字串替換成為新的字串,返回替換之後的結果新字串。
備註:CharSequence意思就是說可以接受字串型別。
1 public class Demo04StringConvert { 2 3 public static void main(String[] args) { 4 // 轉換成為字元陣列 5 char[] chars = "Hello".toCharArray(); 6 System.out.println(chars[0]); // H 7 System.out.println(chars.length); // 5 8 System.out.println("=============="); 9 10 // 轉換成為位元組陣列 11 byte[] bytes = "abc".getBytes(); 12 for (int i = 0; i < bytes.length; i++) { 13 System.out.println(bytes[i]); 14 } 15 System.out.println("=============="); 16 17 // 字串的內容替換 18 String str1 = "How do you do?"; 19 String str2 = str1.replace("o", "*"); 20 System.out.println(str1); // How do you do? 21 System.out.println(str2); // H*w d* y*u d*? 22 System.out.println("=============="); 23 24 String lang1 = "會不會玩兒呀!你大爺的!你大爺的!你大爺的!!!"; 25 String lang2 = lang1.replace("你大爺的", "****"); 26 System.out.println(lang2); // 會不會玩兒呀!****!****!****!!! 27 } 28 29 }轉換
分割字串的方法:
public String[] split(String regex):按照引數的規則,將字串切分成為若干部分。
注意事項:
split方法的引數其實是一個“正則表示式”,今後學習。
今天要注意:如果按照英文句點“.”進行切分,必須寫"\\."(兩個反斜槓)
1 public class Demo05StringSplit { 2 3 public static void main(String[] args) { 4 String str1 = "aaa,bbb,ccc"; 5 String[] array1 = str1.split(","); 6 for (int i = 0; i < array1.length; i++) { 7 System.out.println(array1[i]); 8 } 9 System.out.println("==============="); 10 11 String str2 = "aaa bbb ccc"; 12 String[] array2 = str2.split(" "); 13 for (int i = 0; i < array2.length; i++) { 14 System.out.println(array2[i]); 15 } 16 System.out.println("==============="); 17 18 String str3 = "XXX.YYY.ZZZ"; 19 String[] array3 = str3.split("\\."); 20 System.out.println(array3.length); // 0 21 for (int i = 0; i < array3.length; i++) { 22 System.out.println(array3[i]); 23 } 24 } 25 26 }分割