天天看點

Java基礎API

API

API概述

API (Application Programming Interface) :應用程式程式設計接口

java中的API指的就是 JDK 中提供的各種功能的 Java類,這些類将底層的實作封裝了起來

鍵盤錄入字元串

Scanner類 :

next() : 遇到了空格, 就不再錄入資料了 , 結束标記: 空格, tab鍵

nextLine() : 可以将資料完整的接收過來 , 結束标記: 回車換行符

nextInt和nextLine方法配合使用的時候, nextLine方法就沒有鍵盤錄入的機會了

建議: 今後鍵盤錄入資料的時候, 如果是字元串和整數一起接受, 建議使用next方法接受字元串

public static void main(String[] args) { 
    Scanner sc = new Scanner(System.in); 
    System.out.println("請輸入整數:"); 
    int num = sc.nextInt(); // 10 + 回車換行 
   System.out.println("請輸入字元串:"); 
    String s = sc.nextLine(); 
    System.out.println(num); 
    System.out.println(s);
}      

String類

String概述

1 String 類在 java.lang 包下,是以使用的時候不需要導包

2 String 類代表字元串,Java 程式中的所有字元串文字(例如“abc”)都被實作為此類的執行個體也就是說,Java 程式中所有的雙引号字元串,都是 String 類的對象

3 字元串不可變,它們的值在建立後不能被更改

String類的構造方法

public String() : 建立一個空白字元串對象,不含有任何内容    String s1 = new String();      
public String(char[] chs) : 根據字元數組的内容,來建立字元串對象
                                                    char[] chs = {\'a\',\'b\',\'c\'};    String s2 = new String(chs);      
public String(String original) : 根據傳入的字元串内容,來建立字元串對象  String s3 = new String("123");      
String s = “abc”; 直接指派的方式建立字元串對象,内容就是abc      

建立字元串對象的差別對比

通過構造方法建立

通過 new 建立的字元串對象,每一次 new 都會申請一個記憶體空間,雖然内容相同,但是位址值不同

直接指派方式建立

以“”方式給出的字元串,隻要字元序列相同(順序和大小寫),無論在程式代碼中出現幾次,JVM 都隻會建立一個 String 對象,并在字元串常量池中維護

(從jdk7開始,字元串常量池轉移到堆區)

字元串在字元串常量池中:

不存在:建立

存在:不建立,直接複用

String s1="abc";
String s2="ab";
String s3=s2+"c";
System.out.println(s3==s1)  //false

String s1="abc";
String s2="a"+"b"+"c";
System.out.println(s1==s2)  //true      

字元串變量與字元串變量或者字元串變量與字元串常量用”+“串聯時,系統底層會自動建立一個StringBuilder對象,再調用append方法完成拼接,最後調用toString方法轉換為String類型。

字元串常量之間做拼接時:java存在常量優化機制,會将"a"+"b"+"c"轉換為"abc"

字元串的比較

String s1 = "abc"; 
String s2 = "ABC"; 
String s3 = "abc";      

equals : 比較字元串内容, 區分大小寫

System.out.println(s1.equals(s2));   //false
System.out.println(s1.equals(s3));   //true      

equalsIgnoreCase : 比較字元串内容, 忽略大小寫

System.out.println(s1.equalsIgnoreCase(s2));  //true      

周遊字元串

public char charAt(int index):傳回指定索引處的char值,字元串的索引也是從0開始的

public static void main(String[] args) { 
    // 1. 鍵盤錄入一個字元串,用 Scanner 實作 
    Scanner sc = new Scanner(System.in); 
    System.out.println("請輸入:"); 
    String s = sc.nextLine(); 
    // 2. 周遊字元串,首先要能夠擷取到字元串中的每一個字元
    for(int i = 0; i < s.length(); i++){ 
        // i : 字元串的每一個索引 
        char c = s.charAt(i); 
    System.out.println(c); 
    } 
}          

public char[] toCharArray( ):将目前字元串拆分為字元數組并傳回

public static void main(String[] args) { 
    Scanner sc = new Scanner(System.in); 
    System.out.println("請輸入:"); 
    String s = sc.nextLine(); 
    char[] chars = s.toCharArray(); 
    for (int i = 0; i < chars.length; i++) { 
        System.out.println(chars[i]); 
    } 
}      

字元串截取

String substring(int index) 從index開始截取字元串到結尾,傳回String

String substring(int start,int end) 從start開始截取字元串到end(包含頭,不包含尾),傳回String

// 1. 鍵盤錄入一個字元串,用 Scanner 實作 
Scanner sc = new Scanner(System.in); 
System.out.println("請輸入手機号:");
String telString = sc.nextLine(); 
// 2. 截取字元串前三位 
String start = telString.substring(0,3); 
// 3. 截取字元串後四位 
String end = telString.substring(7); 
// 4. 将截取後的兩個字元串,中間加上****進行拼接,輸出結果 
System.out.println(start + "****" + end);      

字元串替換

String replace(CharSequence target, CharSequence replacement)  将目前targ的内容替換為replacement的内容

// 1. 鍵盤錄入一個字元串,用 Scanner 實作 
    Scanner sc = new Scanner(System.in); 
    System.out.println("請輸入:"); 
    String s = sc.nextLine(); 
// 2. 替換敏感詞 
    String result = s.replace("TMD","***"); 
// 3. 輸出結果 
    System.out.println(result);      

切割字元串

String[] split(String regex, int limit) 根據傳入字元串作為規則進行切割,regex是正規表達式分隔符,并将切割的字元串存入字元串數組,最後将字元串數組傳回,limit是分割份數

//  鍵盤錄入一個字元串,用 Scanner 實作 
Scanner sc = new Scanner(System.in); 
System.out.println("請輸入學生資訊:"); 
String stuInfo = sc.nextLine();
// stuInfo = "張三,23"; 
//  根據逗号切割字元串,得到(張三)(23) 
String[] sArr = stuInfo.split(","); 
// System.out.println(sArr[0]); 
// System.out.println(sArr[1]);      

注意: . 、 $、 | 和 * 等轉義字元,必須得加 \\。

注意:多個分隔符,可以用 | 作為連字元。

public class Test {
    public static void main(String args[]) {
        String str = new String("Welcome-to-Runoob");
 
        System.out.println("- 分隔符傳回值 :" );
        for (String retval: str.split("-")){
            System.out.println(retval);
        }
 
        System.out.println("");
        System.out.println("- 分隔符設定分割份數傳回值 :" );
        for (String retval: str.split("-", 2)){
            System.out.println(retval);
        }
 
        System.out.println("");
        String str2 = new String("www.runoob.com");
        System.out.println("轉義字元傳回值 :" );
        for (String retval: str2.split("\\.", 3)){
            System.out.println(retval);
        }
 
        System.out.println("");
        String str3 = new String("acount=? and uu =? or n=?");
        System.out.println("多個分隔符傳回值 :" );
        for (String retval: str3.split("and|or")){
            System.out.println(retval);
        }
    }
}      
- 分隔符傳回值 :
Welcome
to
Runoob

- 分隔符設定分割份數傳回值 :
Welcome
to-Runoob

轉義字元傳回值 :
www
runoob
com

多個分隔符傳回值 :
acount=? 
 uu =? 
 n=?      

StringBuilder類

StringBuilder類概述

概述 : StringBuilder 是一個可變的字元串類,我們可以把它看成是一個容器,這裡的可變指的是 StringBuilder 對象中的内容是可變的

構造方法

public StringBuilder() 建立一個空白可變字元串對象,不含有任何内容
public StringBuilder(String str) 根據字元串的内容,來建立可變字元串對象      
StringBuilder sb = new StringBuilder();
StringBuilder sb2 = new StringBuilder("hello");      

StringBuilder常用的成員方法

append / reverse

public StringBuilder append(任意類型) 添加資料,并傳回對象本身
public StringBuilder reverse() 傳回相反的字元序列      
sb.append("hello").append("world").append("java").append(100);可鍊式程式設計
sb.reverse();      

append傳回對象本身(類似C++的引用),可以鍊式程式設計,也可以用多個StringBuilder對象控制同一個對象

StringBuilder sb=StringBuilder("hello");
StringBuilder s=sb.append(" world");
System.out.println(s);  //hello world      

toString()

public String toString()  //通過 toString() 就可以實作把 StringBuilder 轉換為 String
public StringBuilder(String s)  //通過構造方法就可以實作把 String 轉換為 StringBuilder      
StringBuilder sb=new StringBuilder("hello");
String s = sb.toString();   //StringBuilder-->String
StringBuilder sb = new StringBuilder(s);  //String-->StringBuilder      

StringBuilder提高效率原理

String拼接:

Java基礎API

StringBuilder拼接:

Java基礎API

案例1:判斷回文字

public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        String s1=sc.nextLine();
        StringBuilder sb1= new StringBuilder(s1);
        sb1.reverse();
        String sb=sb1.toString();
        if(sb.equals(s1)){
            System.out.println("是回文字");
        }else{
            System.out.println("不是回文字");
        }
    }      

案例2:StringBuilder拼接字元串

定義一個方法,把 int 數組中的資料按照指定的格式拼接成一個字元串傳回,調用該方法,并在控制台輸出結果。例如,數組為int[] arr = {1,2,3}; ,執行方法後的輸出結果為:[1, 2, 3]

public static void main(String[] args) {
        int[] a={1,2,3};
        String s=toArryString(a);
        System.out.println(s);
    }
    public static String toArryString(int[] a){
        StringBuilder sb=new StringBuilder();
        sb.append("[");
        for (int i = 0; i < a.length; i++) {
            if(i==a.length-1){
                sb.append(a[i]).append("]");
            }else{
                sb.append(a[i]).append(",");
            }
        }
        String s=sb.toString();
        return s;
    }