常用API - Scanner、Random、ArrayList

来源:https://www.cnblogs.com/1101-/archive/2020/05/31/13019660.html
-Advertisement-
Play Games

API 概述 API(Application Programming Interface),應用程式編程介面。 Java API是一本程式員的 字典 ,是JDK中提供給我們使用的類的說明文檔。 這些類將底層的代碼實現封裝了起來,我們不需要關心這些類是如何實現的,只需要學習這些類如何使用即可。 所以我 ...


API

概述

API(Application Programming Interface),應用程式編程介面。

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

這些類將底層的代碼實現封裝了起來,我們不需要關心這些類是如何實現的,只需要學習這些類如何使用即可。

所以我們可以通過查詢API的方式,來學習Java提供的類,並得知如何使用它們。

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

API 使用步驟

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

引用類型使用步驟

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

匿名對象

創建對象的標準格式

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

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

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

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

  • 可以當實參傳給方法
  • 也可以作為返回值

Scanner類

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

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

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 前言 本文的文字及圖片來源於網路,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯繫我們以作處理。 作者:費弗里 1. 簡介 Kepler.gl相信很多人都聽說過,作為Uber幾年前開源的互動式地理信息可視化工具,kepler.gl依托WebGL強大的圖形渲染能力,可以在瀏 ...
  • 15.模塊-包-庫 15.1 基本概念 隨著代碼量的不斷增多,一個文件里代碼會越來越長,也不容易維護。為瞭解決這種問題,我們會進行拆分,並將具備類似的功能放同一文件中。這樣每個文件包含的代碼就相對較少。在Python中一個.py文件就稱之為一個模塊,英文叫(module) 使用模塊的好處如下所示: ...
  • 14.異常處理 只要是人編寫的代碼,或多或少都會存在一些Bug,當這些Bug被程式捕捉之後,需要怎麼處理,就需要我們告訴代碼應該處理,通常稱之為異常處理。 14.1 什麼是異常 Python使用異常對象來表示異常狀態,併在遇到錯誤進引發異常,異常對象被捕捉到未處理,程式則會終止並顯示相應的錯誤信息, ...
  • 冒泡排序是一種簡單的排序演算法。 1 #pragma once 2 #include <iostream> 3 #include <assert.h> 4 using std::cout; 5 using std::endl; 6 template <typename T> void Swap(T & ...
  • Java生鮮電商平臺-生鮮電商中配送訂單解決方案(小程式/APP) 說明:在日常的生鮮電商平臺中,生鮮配送是一個不可獲取的環節,根據實際的業務場景,生鮮配送有兩個維度需要考慮 1. 時間維度。 說明:時間維度是指客戶一般什麼時候要,就是什麼時候配送的問題,如果是前置倉模式,那麼就需要29分必送達,如 ...
  • 註釋是為了使別人能看懂你寫的程式,也為了使你在若幹年後還能看得懂你曾經寫的程式而設定的。 註釋是寫給程式員看的,不是寫給電腦看的。所以註釋的內容,C語言編譯器在編譯時會被自動忽略,不會執行註釋的代碼! 方法一:使用// #include "stdafx.h" //main函數 :程式的入口函數,就好 ...
  • 有很多剛學習軟體測試的小伙伴,都會在網路上找尋各種學習資料,去提升自己的專業技能水平。因此,我決定定期分享我整理收集的一些軟體測試的測試工具下載、面試寶典、視頻教學合集。都整理好了,有需要的可以關註我(獲取方式在文末) 軟體測試的學習,不止是基礎理論,還需要學習測試工具的用法,如介面工具Postma ...
  • 女程式員是這麼徵婚的: SELECT * FROM 男人們 WHERE 未婚=true and 同性戀=false and 有房=true and 有車=true and 條件 in (帥氣,紳士,大度,氣質,智慧,溫柔,體貼,會浪漫,活潑,可愛,最好還能帶孩子) and 年齡 between(24 ...
一周排行
    -Advertisement-
    Play Games
  • 概述:在C#中,++i和i++都是自增運算符,其中++i先增加值再返回,而i++先返回值再增加。應用場景根據需求選擇,首碼適合先增後用,尾碼適合先用後增。詳細示例提供清晰的代碼演示這兩者的操作時機和實際應用。 在C#中,++i 和 i++ 都是自增運算符,但它們在操作上有細微的差異,主要體現在操作的 ...
  • 上次發佈了:Taurus.MVC 性能壓力測試(ap 壓測 和 linux 下wrk 壓測):.NET Core 版本,今天計劃準備壓測一下 .NET 版本,來測試並記錄一下 Taurus.MVC 框架在 .NET 版本的性能,以便後續持續優化改進。 為了方便對比,本文章的電腦環境和測試思路,儘量和... ...
  • .NET WebAPI作為一種構建RESTful服務的強大工具,為開發者提供了便捷的方式來定義、處理HTTP請求並返迴響應。在設計API介面時,正確地接收和解析客戶端發送的數據至關重要。.NET WebAPI提供了一系列特性,如[FromRoute]、[FromQuery]和[FromBody],用 ...
  • 原因:我之所以想做這個項目,是因為在之前查找關於C#/WPF相關資料時,我發現講解圖像濾鏡的資源非常稀缺。此外,我註意到許多現有的開源庫主要基於CPU進行圖像渲染。這種方式在處理大量圖像時,會導致CPU的渲染負擔過重。因此,我將在下文中介紹如何通過GPU渲染來有效實現圖像的各種濾鏡效果。 生成的效果 ...
  • 引言 上一章我們介紹了在xUnit單元測試中用xUnit.DependencyInject來使用依賴註入,上一章我們的Sample.Repository倉儲層有一個批量註入的介面沒有做單元測試,今天用這個示例來演示一下如何用Bogus創建模擬數據 ,和 EFCore 的種子數據生成 Bogus 的優 ...
  • 一、前言 在自己的項目中,涉及到實時心率曲線的繪製,項目上的曲線繪製,一般很難找到能直接用的第三方庫,而且有些還是定製化的功能,所以還是自己繪製比較方便。很多人一聽到自己畫就害怕,感覺很難,今天就分享一個完整的實時心率數據繪製心率曲線圖的例子;之前的博客也分享給DrawingVisual繪製曲線的方 ...
  • 如果你在自定義的 Main 方法中直接使用 App 類並啟動應用程式,但發現 App.xaml 中定義的資源沒有被正確載入,那麼問題可能在於如何正確配置 App.xaml 與你的 App 類的交互。 確保 App.xaml 文件中的 x:Class 屬性正確指向你的 App 類。這樣,當你創建 Ap ...
  • 一:背景 1. 講故事 上個月有個朋友在微信上找到我,說他們的軟體在客戶那邊隔幾天就要崩潰一次,一直都沒有找到原因,讓我幫忙看下怎麼回事,確實工控類的軟體環境複雜難搞,朋友手上有一個崩潰的dump,剛好丟給我來分析一下。 二:WinDbg分析 1. 程式為什麼會崩潰 windbg 有一個厲害之處在於 ...
  • 前言 .NET生態中有許多依賴註入容器。在大多數情況下,微軟提供的內置容器在易用性和性能方面都非常優秀。外加ASP.NET Core預設使用內置容器,使用很方便。 但是筆者在使用中一直有一個頭疼的問題:服務工廠無法提供請求的服務類型相關的信息。這在一般情況下並沒有影響,但是內置容器支持註冊開放泛型服 ...
  • 一、前言 在項目開發過程中,DataGrid是經常使用到的一個數據展示控制項,而通常表格的最後一列是作為操作列存在,比如會有編輯、刪除等功能按鈕。但WPF的原始DataGrid中,預設只支持固定左側列,這跟大家習慣性操作列放最後不符,今天就來介紹一種簡單的方式實現固定右側列。(這裡的實現方式參考的大佬 ...