1. 程式人生 > >String、StringBuffer 的使用 ,兩個面試問題

String、StringBuffer 的使用 ,兩個面試問題

編程 div 反轉 tostring ringbuf 出現 線程安全 ase 大寫字母

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 的使用 ,兩個面試問題