Java入門系列-13-String 和 StringBuffer

要成為王的男人發表於2018-10-28

這篇文章帶你學會字串的日常操作

String類

字串在日常生活中無處不在,所以掌握字串的使用至關重要。 使用 String 物件儲存字串,String 類位於 java.lang 包中,java.lang 不需要我們手動匯入可以直接使用。

敲一敲:String物件儲存字串

String s="Hello world";
String s=new String();
String s=new String("Hello world");
複製程式碼

下面列出一些常用的方法

方法 介紹
length() 獲取字串中字元的個數
equals() 比較兩個字串物件的內容是否一致
equalsIgnoreCase() 忽略大小寫比較
toLowerCase() 轉小寫
toUpperCase() 轉大寫
concat() 向字串後面拼接字串並返回一個新字串
indexOf() 搜尋第一個出現的字元或字串,從左往右
lastIndexOf() 與indexOf搜尋方向相反
substring() 提取指定位置開始的字串或指定開始和結束之間的字串
trim() 返回去除字串前後的空格後的副本
split() 按照指定字串分隔,返回字串陣列

敲一敲:length 方法的使用

import java.util.Scanner;

public class DemoLength {
	public static void main(String[] args) {
		Scanner input=new Scanner(System.in);
		System.out.println("請輸入使用者名稱:");
		String name=input.next();
		if (name.length()<4) {
			System.out.println("使用者名稱不能小於4位");
		}else {
			System.out.println("使用者名稱可以使用,長度為:"+name.length());
		}
	}
}
複製程式碼

==equals 不能混用,== 判斷兩個字串在記憶體中的地址,在任何地方使用 new 都會產生新的記憶體地址。

敲一敲:體會區別和字串的不可變性

public class DemoString {
	public static void main(String[] args) {
		String a="張三";
		String b="張三";//a與b是同一個物件,未變
		System.out.println(a==b);//true
		System.out.println(a.equals(b));//true
		
		String c=new String("張三");//新的字串物件
		System.out.println(a==c);//false
		System.out.println(a.equals(c));//true
	}
}
複製程式碼

比較兩個字串的值不能使用 == ,應該使用 equals 方法比較

敲一敲:不考慮大小寫比較1

import java.util.Scanner;

//忽略大小比較方法1
public class DemoEquals1 {
	public static void main(String[] args) {
		Scanner input=new Scanner(System.in);
		String str="";
		do {
			System.out.println("繼續輸入 Yes");
			str=input.next();
		} while (str.toLowerCase().equals("yes")||str.toUpperCase().equals("YES"));
	}
}
複製程式碼

敲一敲:不考慮大小寫比較2

import java.util.Scanner;

public class DemoEquals2 {
	public static void main(String[] args) {
		Scanner input=new Scanner(System.in);
		String str="";
		do {
			System.out.println("繼續輸入 Yes");
			str=input.next();
		} while (str.equalsIgnoreCase("yeS"));
	}
}
複製程式碼

敲一敲:對比 + 拼接和 concat() 拼接

public class DemoConcat {
	public static void main(String[] args) {
		String a="hello";
		String b=a+" world";
		System.out.println(b);
		String c=b.concat(" test");//b不會變
		System.out.println(b);
		System.out.println(c);
	}
}
複製程式碼

敲一敲:indexOf 和 lastIndexOf 的使用

import java.util.Scanner;

public class TestIndexOf {
	public static void main(String[] args) {
		System.out.println("請輸入郵箱:");
		Scanner input=new Scanner(System.in);
		String email=input.next();
		if(email.indexOf("@")==-1) {
			System.out.println("郵箱格式有誤!");
		}
		String text="a@bb@cc";
		System.out.println("indexOf:"+text.indexOf("@"));
		System.out.println("lastIndexOf:"+text.lastIndexOf("@"));
	}
}
複製程式碼

敲一敲:使用substring

import java.util.Scanner;
public class DemoSubstring {
	public static void main(String[] args) {
		//獲取郵箱使用者名稱
		Scanner input=new Scanner(System.in);
		System.out.println("輸入完整郵箱:");
		String email=input.next();
		int index=email.indexOf("@");
		String username=email.substring(0,index);
		System.out.println("使用者名稱:"+username);
	}
}
複製程式碼

敲一敲:使用 trim

public class DemoTrim {
	public static void main(String[] args) {
		String text=" he llo ";
		System.out.println(text.trim());
	}
}
複製程式碼

敲一敲:使用 split

public class DemoSplit {
	public static void main(String[] args) {
		String text="hello,world,java";
		String[] result=text.split(",");
		for (int i = 0; i < result.length; i++) {
			System.out.println(result[i]);
		}
	}
}
複製程式碼

StringBuffer類與常用方法

對字串頻繁修改(如字串連線)時,使用 StringBuffer 類可以大大提高程式執行效率。

敲一敲:使用 StringBuffer 拼接字元

public class DemoStringBuffer {
	public static void main(String[] args) {
		StringBuffer sb=new StringBuffer("hello");
		sb.append("word");
		System.out.println(sb.toString());
		
		StringBuffer sb2=new StringBuffer();
		sb2.append("hello");
		sb2.append("word");
		System.out.println(sb2);
	}
}
複製程式碼

敲一敲:使用 insert 方法

import java.util.Scanner;

public class TestInsert {
	public static void main(String[] args) {
		Scanner input=new Scanner(System.in);
		System.out.println("請輸入一串數字:");
		String nums=input.next();
		StringBuffer str=new StringBuffer(nums);
		for (int i = str.length()-3; i >0; i-=3) {
			str.insert(i, ",");
		}
		System.out.println(str);
	}
}
複製程式碼

搜尋關注公眾號「享智同行」,第一時間獲取技術乾貨

相關文章