什麼是API
API (Application Programming Interface) :應用程式程式設計介面
java中的API
指的就是 JDK 中提供的各種功能的 Java類,這些類將底層的實現封裝了起來,我們不需要關心這些類是如何實現的,只需要學習這些類如何使用即可,我們可以通過幫助文件來學習這些API如何使用。
String 類代表字串,Java 程式中的所有字串文字(例如「abc」)都被實現爲此類的範例。也就是說,Java 程式中所有的雙引號字串,都是 String 類的物件。String 類在 java.lang 包下,所以使用的時候不需要導包!
常用的構造方法
方法名 | 說明 |
---|---|
public String() | 建立一個空白字串物件,不含有任何內容 |
public String(char[] chs) | 根據字元陣列的內容,來建立字串物件 |
public String(byte[] bys) | 根據位元組陣列的內容,來建立字串物件 |
String s = 「abc」; | 直接賦值的方式建立字串物件,內容就是abc |
範例程式碼
public class StringDemo01 {
public static void main(String[] args) {
//public String():建立一個空白字串物件,不含有任何內容
String s1 = new String();
System.out.println("s1:" + s1);
//public String(char[] chs):根據字元陣列的內容,來建立字串物件
char[] chs = {'a', 'b', 'c'};
String s2 = new String(chs);
System.out.println("s2:" + s2);
//public String(byte[] bys):根據位元組陣列的內容,來建立字串物件
byte[] bys = {97, 98, 99};
String s3 = new String(bys);
System.out.println("s3:" + s3);
//String s = 「abc」; 直接賦值的方式建立字串物件,內容就是abc
String s4 = "abc";
System.out.println("s4:" + s4);
}
}
通過構造方法建立
通過 new 建立的字串物件,每一次 new 都會申請一個記憶體空間,雖然內容相同,但是地址值不同
直接賦值方式建立
以「」方式給出的字串,只要字元序列相同(順序和大小寫),無論在程式程式碼中出現幾次,JVM 都只會建立一個 String 物件,並在字串池中維護
方法介紹
public boolean equals(String s) 比較兩個字串內容是否相同、區分大小寫
範例程式碼
public class StringDemo02 {
public static void main(String[] args) {
//構造方法的方式得到物件
char[] chs = {'a', 'b', 'c'};
String s1 = new String(chs);
String s2 = new String(chs);
//直接賦值的方式得到物件
String s3 = "abc";
String s4 = "abc";
//比較字串物件地址是否相同
System.out.println(s1 == s2);
System.out.println(s1 == s3);
System.out.println(s3 == s4);
System.out.println("--------");
//比較字串內容是否相同
System.out.println(s1.equals(s2));
System.out.println(s1.equals(s3));
System.out.println(s3.equals(s4));
}
}
已知使用者名稱和密碼,請用程式實現模擬使用者登錄。總共給三次機會,登錄之後,給出相應的提示
/*
思路:
1:已知使用者名稱和密碼,定義兩個字串表示即可
2:鍵盤錄入要登錄的使用者名稱和密碼,用 Scanner 實現
3:拿鍵盤錄入的使用者名稱、密碼和已知的使用者名稱、密碼進行比較,給出相應的提示。字串的內容比較,用equals() 方法實現
4:用回圈實現多次機會,這裏的次數明確,採用for回圈實現,並在登錄成功的時候,使用break結束回圈
*/
public class StringTest01 {
public static void main(String[] args) {
//已知使用者名稱和密碼,定義兩個字串表示即可
String username = "itheima";
String password = "czbk";
//用回圈實現多次機會,這裏的次數明確,採用for回圈實現,並在登錄成功的時候,使用break結束回圈
for(int i=0; i<3; i++) {
//鍵盤錄入要登錄的使用者名稱和密碼,用 Scanner 實現
Scanner sc = new Scanner(System.in);
System.out.println("請輸入使用者名稱:");
String name = sc.nextLine();
System.out.println("請輸入密碼:");
String pwd = sc.nextLine();
//拿鍵盤錄入的使用者名稱、密碼和已知的使用者名稱、密碼進行比較,給出相應的提示。字串的內容比較,用equals() 方法實現
if (name.equals(username) && pwd.equals(password)) {
System.out.println("登錄成功");
break;
} else {
if(2-i == 0) {
System.out.println("你的賬戶被鎖定,請與管理員聯繫");
} else {
//2,1,0
//i,0,1,2
System.out.println("登錄失敗,你還有" + (2 - i) + "次機會");
}
}
}
}
}
鍵盤錄入一個字串,使用程式實現在控制檯遍歷該字串
/*
思路:
1:鍵盤錄入一個字串,用 Scanner 實現
2:遍歷字串,首先要能夠獲取到字串中的每一個字元
public char charAt(int index):返回指定索引處的char值,字串的索引也是從0開始的
3:遍歷字串,其次要能夠獲取到字串的長度
public int length():返回此字串的長度
陣列的長度:陣列名.length
字串的長度:字串物件.length()
4:遍歷字串的通用格式
*/
public class StringTest02 {
public static void main(String[] args) {
//鍵盤錄入一個字串,用 Scanner 實現
Scanner sc = new Scanner(System.in);
System.out.println("請輸入一個字串:");
String line = sc.nextLine();
for(int i=0; i<line.length(); i++) {
System.out.println(line.charAt(i));
}
}
}
鍵盤錄入一個字串,統計該字串中大寫字母字元,小寫字母字元,數位字元出現的次數(不考慮其他字元)
/*
思路:
1:鍵盤錄入一個字串,用 Scanner 實現
2:要統計三種類型的字元個數,需定義三個統計變數,初始值都爲0
3:遍歷字串,得到每一個字元
4:判斷該字元屬於哪種型別,然後對應型別的統計變數+1
假如ch是一個字元,我要判斷它屬於大寫字母,小寫字母,還是數位,直接判斷該字元是否在對應的範圍即可
大寫字母:ch>='A' && ch<='Z'
小寫字母: ch>='a' && ch<='z'
數位: ch>='0' && ch<='9'
5:輸出三種類型的字元個數
*/
public class StringTest03 {
public static void main(String[] args) {
//鍵盤錄入一個字串,用 Scanner 實現
Scanner sc = new Scanner(System.in);
System.out.println("請輸入一個字串:");
String line = sc.nextLine();
//要統計三種類型的字元個數,需定義三個統計變數,初始值都爲0
int bigCount = 0;
int smallCount = 0;
int numberCount = 0;
//遍歷字串,得到每一個字元
for(int i=0; i<line.length(); i++) {
char ch = line.charAt(i);
//判斷該字元屬於哪種型別,然後對應型別的統計變數+1
if(ch>='A' && ch<='Z') {
bigCount++;
} else if(ch>='a' && ch<='z') {
smallCount++;
} else if(ch>='0' && ch<='9') {
numberCount++;
}
}
//輸出三種類型的字元個數
System.out.println("大寫字母:" + bigCount + "個");
System.out.println("小寫字母:" + smallCount + "個");
System.out.println("數位:" + numberCount + "個");
}
}
定義一個方法,把 int 陣列中的數據按照指定的格式拼接成一個字串返回,呼叫該方法,
並在控制檯輸出結果。例如,陣列爲 int[] arr = {1,2,3}; ,執行方法後的輸出結果爲:[1, 2, 3]
/*
思路:
1:定義一個 int 型別的陣列,用靜態初始化完成陣列元素的初始化
2:定義一個方法,用於把 int 陣列中的數據按照指定格式拼接成一個字串返回。
返回值型別 String,參數列表 int[] arr
3:在方法中遍歷陣列,按照要求進行拼接
4:呼叫方法,用一個變數接收結果
5:輸出結果
*/
public class StringTest04 {
public static void main(String[] args) {
//定義一個 int 型別的陣列,用靜態初始化完成陣列元素的初始化
int[] arr = {1, 2, 3};
//呼叫方法,用一個變數接收結果
String s = arrayToString(arr);
//輸出結果
System.out.println("s:" + s);
}
//定義一個方法,用於把 int 陣列中的數據按照指定格式拼接成一個字串返回
/*
兩個明確:
返回值型別:String
參數:int[] arr
*/
public static String arrayToString(int[] arr) {
//在方法中遍歷陣列,按照要求進行拼接
String s = "";
s += "[";
for(int i=0; i<arr.length; i++) {
if(i==arr.length-1) {
s += arr[i];
} else {
s += arr[i];
s += ", ";
}
}
s += "]";
return s;
}
}
定義一個方法,實現字串反轉。鍵盤錄入一個字串,呼叫該方法後,在控制檯輸出結果
例如,鍵盤錄入 abc,輸出結果 cba
/*
思路:
1:鍵盤錄入一個字串,用 Scanner 實現
2:定義一個方法,實現字串反轉。返回值型別 String,參數 String s
3:在方法中把字串倒着遍歷,然後把每一個得到的字元拼接成一個字串並返回
4:呼叫方法,用一個變數接收結果
5:輸出結果
*/
public class StringTest05 {
public static void main(String[] args) {
//鍵盤錄入一個字串,用 Scanner 實現
Scanner sc = new Scanner(System.in);
System.out.println("請輸入一個字串:");
String line = sc.nextLine();
//呼叫方法,用一個變數接收結果
String s = reverse(line);
//輸出結果
System.out.println("s:" + s);
}
//定義一個方法,實現字串反轉
/*
兩個明確:
返回值型別:String
參數:String s
*/
public static String reverse(String s) {
//在方法中把字串倒着遍歷,然後把每一個得到的字元拼接成一個字串並返回
String ss = "";
for(int i=s.length()-1; i>=0; i--) {
ss += s.charAt(i);
}
return ss;
}
}
方法名 | 說明 |
---|---|
public boolean equals(Object anObject) | 比較字串的內容,嚴格區分大小寫(使用者名稱和密碼) |
public char charAt(int index) | 返回指定索引處的 char 值 |
public int length() | 返回此字串的長度 |
StringBuilder 是一個可變的字串類,我們可以把它看成是一個容器,這裏的可變指的是 StringBuilder 物件中的內容是可變的
常用的構造方法
方法名 | 說明 |
---|---|
public StringBuilder() | 建立一個空白可變字串物件,不含有任何內容 |
public StringBuilder(String str) | 根據字串的內容,來建立可變字串物件 |
範例程式碼
public class StringBuilderDemo01 {
public static void main(String[] args) {
//public StringBuilder():建立一個空白可變字串物件,不含有任何內容
StringBuilder sb = new StringBuilder();
System.out.println("sb:" + sb);
System.out.println("sb.length():" + sb.length());
//public StringBuilder(String str):根據字串的內容,來建立可變字串物件
StringBuilder sb2 = new StringBuilder("hello");
System.out.println("sb2:" + sb2);
System.out.println("sb2.length():" + sb2.length());
}
}
新增和反轉方法
方法名 | 說明 |
---|---|
public StringBuilder append(任意型別) | 新增數據,並返回物件本身 |
public StringBuilder reverse() | 返回相反的字元序列 |
範例程式碼
public class StringBuilderDemo01 {
public static void main(String[] args) {
//建立物件
StringBuilder sb = new StringBuilder();
//public StringBuilder append(任意型別):新增數據,並返回物件本身
// StringBuilder sb2 = sb.append("hello");
//
// System.out.println("sb:" + sb);
// System.out.println("sb2:" + sb2);
// System.out.println(sb == sb2);
// sb.append("hello");
// sb.append("world");
// sb.append("java");
// sb.append(100);
//鏈式程式設計
sb.append("hello").append("world").append("java").append(100);
System.out.println("sb:" + sb);
//public StringBuilder reverse():返回相反的字元序列
sb.reverse();
System.out.println("sb:" + sb);
}
}
StringBuilder轉換爲String
public String toString():通過 toString() 就可以實現把 StringBuilder 轉換爲 String
String轉換爲StringBuilder
public StringBuilder(String s):通過構造方法就可以實現把 String 轉換爲 StringBuilder
範例程式碼
public class StringBuilderDemo02 {
public static void main(String[] args) {
/*
//StringBuilder 轉換爲 String
StringBuilder sb = new StringBuilder();
sb.append("hello");
//String s = sb; //這個是錯誤的做法
//public String toString():通過 toString() 就可以實現把 StringBuilder 轉換爲 String
String s = sb.toString();
System.out.println(s);
*/
//String 轉換爲 StringBuilder
String s = "hello";
//StringBuilder sb = s; //這個是錯誤的做法
//public StringBuilder(String s):通過構造方法就可以實現把 String 轉換爲 StringBuilder
StringBuilder sb = new StringBuilder(s);
System.out.println(sb);
}
}
定義一個方法,把 int 陣列中的數據按照指定的格式拼接成一個字串返回,呼叫該方法,
並在控制檯輸出結果。例如,陣列爲int[] arr = {1,2,3}; ,執行方法後的輸出結果爲:[1, 2, 3]
/*
思路:
1:定義一個 int 型別的陣列,用靜態初始化完成陣列元素的初始化
2:定義一個方法,用於把 int 陣列中的數據按照指定格式拼接成一個字串返回。
返回值型別 String,參數列表 int[] arr
3:在方法中用 StringBuilder 按照要求進行拼接,並把結果轉成 String 返回
4:呼叫方法,用一個變數接收結果
5:輸出結果
*/
public class StringBuilderTest01 {
public static void main(String[] args) {
//定義一個 int 型別的陣列,用靜態初始化完成陣列元素的初始化
int[] arr = {1, 2, 3};
//呼叫方法,用一個變數接收結果
String s = arrayToString(arr);
//輸出結果
System.out.println("s:" + s);
}
//定義一個方法,用於把 int 陣列中的數據按照指定格式拼接成一個字串返回
/*
兩個明確:
返回值型別:String
參數:int[] arr
*/
public static String arrayToString(int[] arr) {
//在方法中用 StringBuilder 按照要求進行拼接,並把結果轉成 String 返回
StringBuilder sb = new StringBuilder();
sb.append("[");
for(int i=0; i<arr.length; i++) {
if(i == arr.length-1) {
sb.append(arr[i]);
} else {
sb.append(arr[i]).append(", ");
}
}
sb.append("]");
String s = sb.toString();
return s;
}
}
定義一個方法,實現字串反轉。鍵盤錄入一個字串,呼叫該方法後,在控制檯輸出結果
例如,鍵盤錄入abc,輸出結果 cba
/*
思路:
1:鍵盤錄入一個字串,用 Scanner 實現
2:定義一個方法,實現字串反轉。返回值型別 String,參數 String s
3:在方法中用StringBuilder實現字串的反轉,並把結果轉成String返回
4:呼叫方法,用一個變數接收結果
5:輸出結果
*/
public class StringBuilderTest02 {
public static void main(String[] args) {
//鍵盤錄入一個字串,用 Scanner 實現
Scanner sc = new Scanner(System.in);
System.out.println("請輸入一個字串:");
String line = sc.nextLine();
//呼叫方法,用一個變數接收結果
String s = myReverse(line);
//輸出結果
System.out.println("s:" + s);
}
//定義一個方法,實現字串反轉。返回值型別 String,參數 String s
/*
兩個明確:
返回值型別:String
參數:String s
*/
public static String myReverse(String s) {
//在方法中用StringBuilder實現字串的反轉,並把結果轉成String返回
//String --- StringBuilder --- reverse() --- String
// StringBuilder sb = new StringBuilder(s);
// sb.reverse();
// String ss = sb.toString();
// return ss;
return new StringBuilder(s).reverse().toString();
}
}
方法名 | 說明 |
---|---|
public StringBuilder append (任意型別) | 新增數據,並返回物件本身 |
public StringBuilder reverse() | 返回相反的字元序列 |
public int length() | 返回長度,實際儲存值 |
public String toString() | 通過toString()就可以實現把StringBuilder轉換爲String |