經常使用API - Scanner、Random、ArrayList

API

概述

API(Application Programming Interface),應用程序編程接口。html

Java API是一本程序員的 字典 ,是JDK中提供給咱們使用的類的說明文檔。java

這些類將底層的代碼實現封裝了起來,咱們不須要關心這些類是如何實現的,只須要學習這些類如何使用便可。程序員

因此咱們能夠經過查詢API的方式,來學習Java提供的類,並得知如何使用它們。算法

離線API文檔下載 提取碼:uitw編程

API 使用步驟

  1. 打開幫助文檔。
  2. 點擊顯示,找到索引,看到輸入框。
  3. 你要找誰?在輸入框裏輸入,而後回車。
  4. 看包。java.lang下的類不須要導包,其餘須要。
  5. 看類的解釋和說明。
  6. 學習構造方法。

引用類型使用步驟

  • 導包
  • 建立對象
  • 調用方法

匿名對象

建立對象的標準格式api

類名稱 對象名 = new 類名稱();

匿名對象就是隻有右邊的對象,沒有左邊的名字和賦值運算符數組

new 類名稱();
new 類名稱().屬性;
new 類名稱().方法;

匿名對象只能使用惟一的一次!!oracle

  • 能夠當實參傳給方法
  • 也能夠做爲返回值

Scanner類

Scanner類在基礎語法發過了,傳送門

dom

Random類

概述

此類的實例用於生成僞隨機數流。工具

若是用相同的種子建立兩個 Random 實例,則對每一個實例進行相同的方法調用序列,它們將生成並返回相同的數字序列。

Random 類實現的算法使用一個 protected 實用工具方法,每次調用它最多可提供 32 個僞隨機生成的位。

不少應用程序會發現 Math.random() 方法更易於使用。

構造方法

構造方法 說明
Random() 建立一個新的隨機數生成器。
Random(long seed) 使用單個 long 種子建立一個新的隨機數生成器。

經常使用方法

方法摘要 描述
protected int next(int bits) 生成下一個僞隨機數。
int nextInt() 返回下一個僞隨機數,它是此隨機數生成器的序列中均勻分佈的 int 值。
int nextInt(int n) 返回一個僞隨機數,它是取自此隨機數生成器序列的、在 0(包括)和指定值(不包括)之間均勻分佈的 int 值。
long nextLong() 返回下一個僞隨機數,它是取自此隨機數生成器序列的均勻分佈的 long 值。
float nextFloat() 返回下一個僞隨機數,它是取自此隨機數生成器序列的、在 0.0 和 1.0 之間均勻分佈的 float 值。
double nextDouble() 返回下一個僞隨機數,它是取自此隨機數生成器序列的、在 0.0 和 1.0 之間均勻分佈的 double 值。
boolean nextBoolean() 返回下一個僞隨機數,它是取自此隨機數生成器序列的均勻分佈的 boolean 值。
void setSeed(long seed) 使用單個 long 種子設置此隨機數生成器的種子。
double nextGaussian() 返回下一個僞隨機數,它是取自此隨機數生成器序列的、呈高斯(「正態」)分佈的 double 值,其平均值是 0.0,標準差是 1.0。
void nextBytes(byte[] bytes) 生成隨機字節並將其置於用戶提供的 byte 數組中。

基本使用

  1. 導包

    import java.util.Random
  2. 建立對象

    Random r = new Random();
  3. 使用

    r.nextInt();

簡單使用

package com;

import java.util.Random;
import java.util.Scanner;

public class RandomTest {
    public static void main(String[] args) {
//        base();
//        bound();
//        exercise1();
        exercise2();

    }

    public static void base() {
        Random r = new Random();
        int i = r.nextInt();
        // 不帶參數將產生整數範圍內的隨機數 (正負21億多)
        System.out.println(i);
    }

    public static void bound() {
        Random r = new Random();
        int i = r.nextInt(10);
        // 帶參數將產生[0,10) 即0~9的隨機數
        System.out.println(i);
    }

    public static void exercise1() {
        // 生成1-n 的隨機數
        Random r = new Random();
        // 0~9的隨機數總體+1 就成了1~10
        int i = r.nextInt(10) + 1;
        System.out.println(i);
    }


    public static void exercise2() {
        // 猜大小
        Scanner sc = new Scanner(System.in);
        Random r = new Random();
        // 範圍0-100
        int target = r.nextInt(101);
        int num = -1;
        // System.out.println("答案"+target);

        do {
            System.out.print("請輸入一個數:");
            num = sc.nextInt();
            if (num > target) {
                System.out.println("太大了");
            } else if (num < target) {
                System.out.println("過小了");
            } else {
                System.out.println("猜對了!");
            }
        } while (num != target);
    }
}

ArrayList類

以前學習數組時,發現一個缺點!

數組一旦建立,就沒法改變數組的長度。

概述

java.util.ArrayList大小可變的數組的實現

對於ArrayList來講,有一個尖括號 表明泛型,泛型就是裝在集合中的全部元素,必須是同一種類型。

注意:泛型只能是引用類型,不能是基本類型

構造方法

構造方法 說明
ArrayList() 構造一個初始容量爲 10 的空列表。
ArrayList(Collection <? extends E> c) 構造一個包含指定 collection 的元素的列表,
這些元素是按照該 collection 的迭代器返回它們的順序排列的。
ArrayList(int initialCapacity) 構造一個具備指定初始容量的空列表

經常使用方法

方法摘要 描述
int size() 返回此列表中的元素數。
boolean add(E e) 將指定的元素添加到此列表的尾部
void add(int index, E element) 將指定的元素插入此列表中的指定位置
E remove(int index) 移除此列表中指定位置上的元素。
boolean remove(Object o) 移除此列表中首次出現的指定元素(若是存在)。
void clear() 移除此列表中的全部元素。
E get(int index) 返回此列表中指定位置上的元素。
boolean contains(Object o) 若是此列表中包含指定的元素,則返回 true。
int indexOf(Object o) 返回此列表中首次出現的指定元素的索引,或若是此列表不包含元素,則返回 -1。
int lastIndexOf(Object o) 返回此列表中最後一次出現的指定元素的索引,或若是此列表不包含索引,則返回 -1
Object clone() 返回此 ArrayList 實例的淺表副本。
boolean isEmpty() 若是此列表中沒有元素,則返回 true
boolean addAll(Collection<? extends E> c) 按照指定 collection 的迭代器所返回的元素順序,將該 collection 中的全部元素添加到此列表的尾部。
boolean addAll(int index, Collection<? extends E> c) 從指定的位置開始,將指定 collection 中的全部元素插入到此列表中。
void ensureCapacity(int minCapacity) 若有必要,增長此 ArrayList 實例的容量,以確保它至少可以容納最小容量參數所指定的元素數。
protected void removeRange(int fromIndex, int toIndex) 移除列表中索引在 fromIndex(包括)和 toIndex(不包括)之間的全部元素。
E set(int index, E element) 用指定的元素替代此列表中指定位置上的元素。
Object[] toArray() 按適當順序(從第一個到最後一個元素)返回包含此列表中全部元素的數組。
<T> T[] toArray(T[] a) 按適當順序(從第一個到最後一個元素)返回包含此列表中全部元素的數組;返回數組的運行時類型是指定數組的運行時類型。
void trimToSize() 將此 ArrayList 實例的容量調整爲列表的當前大小

注意事項

  1. 養成面向接口編程的思惟,ArrayList是List的實現類,便可以寫成List list = new ArrayList();

父類引用指向子類對象,便於後期維護。可參考面向對象知識的多態

image-20200523105025469

  1. 若是使用<E>泛型,不能指定八大基本數據類型,而是指定它們對應的封裝類

    基本類型 封裝類
    int Integer
    char Character
    byte Byte
    short Short
    long Long
    float Float
    double Double
    boolean Boolean

練習

  1. 生成6個1-33的隨機數,添加到集合,並遍歷集合

    package com;
    
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Random;
    
    public class ArrayListExercise {
        public static void main(String[] args) {
    
            exercise1();
    
        }
    
        public static void exercise1() {
            List<Integer> list = new ArrayList<>();
            Random r = new Random();
            final int N = 6;
            for (int i = 0; i < N; i++) {
                int num = r.nextInt(33) + 1;
                list.add(num);
            }
    
            for (int i = 0; i < list.size(); i++) {
                System.out.print(list.get(i) + "\t");
            }
            System.out.println();
            for (Integer i : list) {
                System.out.print(i + "\t");
            }
        }
    }
  2. 自定義4個學生對象,添加到集合,並遍歷集合

    package com;
    
    public class Person {
        private String name;
        private int age;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    
        public Person() {
        }
    
        public Person(String name, int age) {
            this.name = name;
            this.age = age;
        }
    }
    package com;
    
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Random;
    
    public class ArrayListExercise {
        public static void main(String[] args) {
            exercise2();
    
        }
    
        public static void exercise2() {
            List<Person> list = new ArrayList<>();
            list.add(new Person("小明", 5));
            list.add(new Person("小紅", 6));
            list.add(new Person("小王", 7));
            list.add(new Person("小麗", 8));
            for (Person person : list) {
                System.out.println("名字:"+person.getName() + " 年齡:"+person.getAge());
            }
        }
    
    }
  3. 自定義格式打印集合的方法,傳參ArrayList,打印: {元素1@元素2@...@元素n}

    package com;
    
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Random;
    
    public class ArrayListExercise {
        public static void main(String[] args) {
            exercise3();
    
        }
    
        public static void exercise3() {
            List<String> list = new ArrayList<>();
            list.add("張三");
            list.add("李四");
            list.add("王五");
            display((ArrayList) list);
        }
    
        public static void display(ArrayList list) {
            for (int i = 0; i < list.size(); i++) {
                if (i == 0) {
                    System.out.print("{"+list.get(i)+"@");
                } else if (i == list.size()-1) {
                    System.out.print(list.get(i) + "}");
                } else {
                    System.out.print(list.get(i) + "@");
                }
            }
        }
    
    }
  4. 用一個大集合存入20個隨機數,而後篩選其中的偶數元素,存入小集合中,要求自定義方法篩選。

    package com;
    
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Random;
    
    public class ArrayListExercise {
        public static void main(String[] args) {
            exercise4();
    
        }
        public static void exercise4() {
            List<Integer> list = new ArrayList<>();
            Random r = new Random();
            final int N = 20;
            for (int i = 0; i < N; i++) {
                int num = r.nextInt(100) + 1;
                list.add(num);
            }
    
            for (Integer i : list) {
                System.out.print(i + "\t");
            }
    
            List<Integer> small = filter(list);
            System.out.println();
            for (Integer i : small) {
                System.out.print(i + "\t");
            }
        }
    
        public static List<Integer> filter(List<Integer> list) {
            List<Integer> result = new ArrayList<>();
            for (int i = 0; i < list.size(); i++) {
                if (list.get(i) % 2 == 0) {
                    result.add(list.get(i));
                }
            }
            return result;
        }
    }
相關文章
相關標籤/搜索