String、StringBuffer 的使用 ,兩個面試問題
1》統計不同類型字符個數
public static void main(String[] args) { //案例:統計不同類型字符個數 String password = "abZZc23&%Asd^4"; //密碼:大寫,小寫,數字,特殊字符 //1.聲明變量 int big = 0;//大寫 int small = 0;//小寫 int num = 0;//數字 int other = 0;//特殊字符 //2.遍歷字符串的字符 for(int i=0; i < password.length();i++){ //取字符 char ch = password.charAt(i); System.out.println(ch); //判斷字符是否為大寫 if(ch >= ‘A‘ && ch <=‘Z‘){ big ++; }else if(ch >= ‘a‘ && ch <= ‘z‘){//判斷是否為小寫 small ++; }else if(ch >= ‘0‘ && ch <= ‘9‘){//判斷是否為數字 //‘0‘ 對應碼表的數字是48 //‘9‘ 對應碼表的數字是57 num ++; }else{//特殊字符 other ++; } } System.out.println("大寫字母出現的次數:" + big); System.out.println("小寫字母出現的次數:" + small); System.out.println("數字出現的次數:" + num); System.out.println("特殊字符出現的次數:" + other); }
2》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):把字符串拼接,且只能拼接字符串。+方式拼接字符串時,可以是任意類型
3》 案例 將一個字符串的首字母 變成大寫,其余的字母小寫
/* * 需求:把一個字符串的首字母轉成大寫,其余為小寫。(只考慮英文大小寫字母字符) * 舉例: * helloWORLD * 結果: * Helloworld * * 分析: * A:先獲取第一個字符 * B:獲取除了第一個字符以外的字符 * C:把A轉成大寫 * D:把B轉成小寫 * E:C拼接D */ public class StringTest { public static void main(String[] args) { // 定義一個字符串 String s = "helloWORLD"; // 先獲取第一個字符 String s1 = s.substring(0, 1); // 獲取除了第一個字符以外的字符 String s2 = s.substring(1); // 把A轉成大寫 String s3 = s1.toUpperCase(); // 把B轉成小寫 String s4 = s2.toLowerCase(); // C拼接D String s5 = s3.concat(s4); System.out.println(s5); // 優化後的代碼 // 鏈式編程 String result = s.substring(0, 1).toUpperCase().concat(s.substring(1).toLowerCase()); System.out.println(result); } }
4》案例:把int[] arr = {1,2,3} 轉成字符串 [1,2,3]
思路:字符串拼接 首先 新建一個字符串 然後加上 ‘[‘ ,循環便利這個數組,然後拼接 字符串,最後判斷是否是最後一個,加上 ‘]’
5》String類的其它功能
public String replace(char oldChar, char newChar)//替換字符
public String replace(CharSequence target, CharSequence replacement) //替換字符串
String trim();//去除前後空格
public int compareTo(String anotherString) //比較
public int compareToIgnoreCase(String str) //比較
例子:
String s1= "abc";
String s2 = "aac"
s1.compareTo(s2):結果+1
6》案例:字符串的反轉
String str = "abc";
for(int i = str.length() - 1;i >= 0 ;i--){
System.out.print(str.charAt(i));
}
7》案例:統計大串中小串出現的次數
String str = "helgyfnnnngyfooogyf88";
String name = "gyf";
思路:使用死循環,將匹配道德字符串位置加上匹配子串的長度 ,截取,使用統計變量 統計出現次數
8》StringBuffer的構造方法
>StringBuffer 字符串緩沖區類
>StringBuffer裏面的字符序列【char[]】是可以改變的
>String的字符序列是不可以改變
9》StringBuffere的添加方法
>append方法
>insert方法
10》StringBuffer的刪除方法
>deleteCharAt(int index) 刪除指定索引的字符
>delete(int start,int end): 刪除開始到結束位置的字符
11》StringBuffer的反轉功能
>reverse()方法,將字符串反轉
12》StringBuffer的截取功能
>public String substring(int start): 從指定位置截取到末尾
>public String substring(int start,int end): 截取從指定位置開始到結束位置,包括開始位置,不包括結束位置
13》StringBuffer與String的相互轉換
String –> StringBuffer
通過構造方法
通過append()方法
StringBuffer -> String
通過構造方法
通過toString()方法
通過subString(star,end);
14》數組轉成字符串,使用StringBuffer實現
int[] arr = {1,2,3} -> [1,2,3]
思路:循環便利這個數組,然後使用StringBuffer 的append方法來拼接這個字符串 使用if else 判斷添加的位置
15》字符串反轉,使用StringBuffere的reverse方法實現
16》兩首字符串的面試題:
a>StringBuffer和StringBuilder的區別
StringBuffer是jdk1.0版本的,是線程安全的,效率低,加同步鎖
StringBuilder是jdk1.5版本的,是線程不安全的,效率高,沒有加鎖
b>String 和StringBuffer,StringBuilder的區別
String是一個不可變的字符序列
StringBuffer,StringBuilder是可變的字符序列
String、StringBuffer 的使用 ,兩個面試問題