1. 程式人生 > 其它 >Java本科學習 0x08 常用API

Java本科學習 0x08 常用API

題記

一定是練功的時候總是差不多差不多,到關鍵時候總是差一點。 ——二郎神臺詞《寶蓮燈》

1.API

1.1API概述

  • 什麼是API

    ​ API (Application Programming Interface) :應用程式程式設計介面

  • java中的API

    ​ 指的就是 JDK 中提供的各種功能的 Java類,這些類將底層的實現封裝了起來,我們不需要關心這些類是如何實現的,只需要學習這些類如何使用即可,我們可以通過幫助文件來學習這些API如何使用。

1.2如何使用API幫助文件

  • 開啟幫助文件
  • 找到索引選項卡中的輸入框
  • 在輸入框中輸入Random
  • 看類在哪個包下
  • 看類的描述
  • 看構造方法
  • 看成員方法

2.String類

2.1String類概述

​ String 類代表字串,Java 程式中的所有字串文字(例如“abc”)都被實現為此類的例項。也就是說,Java 程式中所有的雙引號字串,都是 String 類的物件。String 類在 java.lang 包下,所以使用的時候不需要導包!

2.2String類的特點

  • 字串不可變,它們的值在建立後不能被更改
  • 雖然 String 的值是不可變的,但是它們可以被共享
  • 字串效果上相當於字元陣列( char[] ),但是底層原理是位元組陣列( byte[] )

2.3String類的構造方法

  • 常用的構造方法

    方法名 說明
    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);
        }
    }
    

2.4建立字串物件兩種方式的區別

  • 通過構造方法建立

    ​ 通過 new 建立的字串物件,每一次 new 都會申請一個記憶體空間,雖然內容相同,但是地址值不同

  • 直接賦值方式建立

    ​ 以“”方式給出的字串,只要字元序列相同(順序和大小寫),無論在程式程式碼中出現幾次,JVM 都只會建立一個 String 物件,並在字串池中維護

2.5字串的比較

2.5.1==號的作用

  • 比較基本資料型別:比較的是具體的值
  • 比較引用資料型別:比較的是物件地址值

2.5.2equals方法的作用

  • 方法介紹

    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));
        }
    }
    

2.6使用者登入案例

2.6.1案例需求

​ 已知使用者名稱和密碼,請用程式實現模擬使用者登入。總共給三次機會,登入之後,給出相應的提示

2.6.2程式碼實現

/*
    思路:
        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) + "次機會");
                }
            }
        }
    }
}

2.7遍歷字串案例

2.7.1案例需求

​ 鍵盤錄入一個字串,使用程式實現在控制檯遍歷該字串

2.7.2程式碼實現

/*
    思路:
        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));
        }
    }
}

2.8統計字元次數案例

2.8.1案例需求

​ 鍵盤錄入一個字串,統計該字串中大寫字母字元,小寫字母字元,數字字元出現的次數(不考慮其他字元)

2.8.2程式碼實現

/*
  思路:
        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 + "個");
    }
}

2.9字串拼接案例

2.9.1案例需求

​ 定義一個方法,把 int 陣列中的資料按照指定的格式拼接成一個字串返回,呼叫該方法,

​ 並在控制檯輸出結果。例如,陣列為 int[] arr = {1,2,3}; ,執行方法後的輸出結果為:[1, 2, 3]

2.9.2程式碼實現

/*
    思路:
        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;
    }
}

2.10字串反轉案例

2.10.1案例需求

​ 定義一個方法,實現字串反轉。鍵盤錄入一個字串,呼叫該方法後,在控制檯輸出結果

​ 例如,鍵盤錄入 abc,輸出結果 cba

2.10.2程式碼實現

/*
    思路:
        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;
    }
}

2.11幫助文件檢視String常用方法

方法名 說明
public boolean equals(Object anObject) 比較字串的內容,嚴格區分大小寫(使用者名稱和密碼)
public char charAt(int index) 返回指定索引處的 char 值
public int length() 返回此字串的長度

3.ArrayList

3.1ArrayList類概述

  • 什麼是集合

    ​ 提供一種儲存空間可變的儲存模型,儲存的資料容量可以發生改變

  • ArrayList集合的特點

    ​ 底層是陣列實現的,長度可以變化

  • 泛型的使用

    ​ 用於約束集合中儲存元素的資料型別

3.2ArrayList類常用方法

3.2.1構造方法

方法名 說明
public ArrayList() 建立一個空的集合物件

3.2.2成員方法

方法名 說明
public boolean remove(Object o) 刪除指定的元素,返回刪除是否成功
public E remove(int index) 刪除指定索引處的元素,返回被刪除的元素
public E set(int index,E element) 修改指定索引處的元素,返回被修改的元素
public E get(int index) 返回指定索引處的元素
public int size() 返回集合中的元素的個數
public boolean add(E e) 將指定的元素追加到此集合的末尾
public void add(int index,E element) 在此集合中的指定位置插入指定的元素

3.2.3示例程式碼

public class ArrayListDemo02 {
    public static void main(String[] args) {
        //建立集合
        ArrayList<String> array = new ArrayList<String>();

        //新增元素
        array.add("hello");
        array.add("world");
        array.add("java");

        //public boolean remove(Object o):刪除指定的元素,返回刪除是否成功
//        System.out.println(array.remove("world"));
//        System.out.println(array.remove("javaee"));

        //public E remove(int index):刪除指定索引處的元素,返回被刪除的元素
//        System.out.println(array.remove(1));

        //IndexOutOfBoundsException
//        System.out.println(array.remove(3));

        //public E set(int index,E element):修改指定索引處的元素,返回被修改的元素
//        System.out.println(array.set(1,"javaee"));

        //IndexOutOfBoundsException
//        System.out.println(array.set(3,"javaee"));

        //public E get(int index):返回指定索引處的元素
//        System.out.println(array.get(0));
//        System.out.println(array.get(1));
//        System.out.println(array.get(2));
        //System.out.println(array.get(3)); //?????? 自己測試

        //public int size():返回集合中的元素的個數
        System.out.println(array.size());

        //輸出集合
        System.out.println("array:" + array);
    }
}

3.3ArrayList儲存字串並遍歷

3.3.1案例需求

​ 建立一個儲存字串的集合,儲存3個字串元素,使用程式實現在控制檯遍歷該集合

3.3.2程式碼實現

/*
    思路:
        1:建立集合物件
        2:往集合中新增字串物件
        3:遍歷集合,首先要能夠獲取到集合中的每一個元素,這個通過get(int index)方法實現
        4:遍歷集合,其次要能夠獲取到集合的長度,這個通過size()方法實現
        5:遍歷集合的通用格式
 */
public class ArrayListTest01 {
    public static void main(String[] args) {
        //建立集合物件
        ArrayList<String> array = new ArrayList<String>();

        //往集合中新增字串物件
        array.add("劉正風");
        array.add("左冷禪");
        array.add("風清揚");

        //遍歷集合,其次要能夠獲取到集合的長度,這個通過size()方法實現
//        System.out.println(array.size());

        //遍歷集合的通用格式
        for(int i=0; i<array.size(); i++) {
            String s = array.get(i);
            System.out.println(s);
        }
    }
}

3.4ArrayList儲存學生物件並遍歷

3.4.1案例需求

​ 建立一個儲存學生物件的集合,儲存3個學生物件,使用程式實現在控制檯遍歷該集合

3.4.2程式碼實現

/*
    思路:
        1:定義學生類
        2:建立集合物件
        3:建立學生物件
        4:新增學生物件到集合中
        5:遍歷集合,採用通用遍歷格式實現
 */
public class ArrayListTest02 {
    public static void main(String[] args) {
        //建立集合物件
        ArrayList<Student> array = new ArrayList<>();

        //建立學生物件
        Student s1 = new Student("林青霞", 30);
        Student s2 = new Student("風清揚", 33);
        Student s3 = new Student("張曼玉", 18);

        //新增學生物件到集合中
        array.add(s1);
        array.add(s2);
        array.add(s3);

        //遍歷集合,採用通用遍歷格式實現
        for (int i = 0; i < array.size(); i++) {
            Student s = array.get(i);
            System.out.println(s.getName() + "," + s.getAge());
        }
    }
}

3.5ArrayList儲存學生物件並遍歷升級版

3.5.1案例需求

​ 建立一個儲存學生物件的集合,儲存3個學生物件,使用程式實現在控制檯遍歷該集合

​ 學生的姓名和年齡來自於鍵盤錄入

3.5.2程式碼實現

/*
    思路:
        1:定義學生類,為了鍵盤錄入資料方便,把學生類中的成員變數都定義為String型別
        2:建立集合物件
        3:鍵盤錄入學生物件所需要的資料
        4:建立學生物件,把鍵盤錄入的資料賦值給學生物件的成員變數
        5:往集合中新增學生物件
        6:遍歷集合,採用通用遍歷格式實現
 */
public class ArrayListTest {
    public static void main(String[] args) {
        //建立集合物件
        ArrayList<Student> array = new ArrayList<Student>();

        //為了提高程式碼的複用性,我們用方法來改程序序
        addStudent(array);
        addStudent(array);
        addStudent(array);

        //遍歷集合,採用通用遍歷格式實現
        for (int i = 0; i < array.size(); i++) {
            Student s = array.get(i);
            System.out.println(s.getName() + "," + s.getAge());
        }
    }

    /*
        兩個明確:
            返回值型別:void
            引數:ArrayList<Student> array
     */
    public static void addStudent(ArrayList<Student> array) {
        //鍵盤錄入學生物件所需要的資料
        Scanner sc = new Scanner(System.in);

        System.out.println("請輸入學生姓名:");
        String name = sc.nextLine();

        System.out.println("請輸入學生年齡:");
        String age = sc.nextLine();

        //建立學生物件,把鍵盤錄入的資料賦值給學生物件的成員變數
        Student s = new Student();
        s.setName(name);
        s.setAge(age);

        //往集合中新增學生物件
        array.add(s);
    }
}