常用API - Scanner、Random、ArrayList

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

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,列印: {元素[email protected]元素[email protected]@元素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;
        }
    }
    
    

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

更多相關文章
  • 前言 本文的文字及圖片來源於網路,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯繫我們以作處理。 作者:費弗里 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 ...
一周排行
  • 本次課程就正式進入開發部分。 首先我們先搭建項目框架,還是和之前漸進式風格保持一致,除必備組件外,儘量使用原生功能以方便大家理解。 開發工具:vs 2019 或以上 資料庫:SQL SERVER 2017 或以上 其他需要用到的我們在項目過程中再提。 一、新建 MVC項目 1、打開VS 2019,C ...
  • 一.背景說明: 之前分享過一個微服務開發框架, “享一個集成.NET Core+Swagger+Consul+Polly+Ocelot+IdentityServer4+Exceptionless+Apollo+SkyWalking的微服務開發框架”,前兩天在Github上收到一個Issues,是想我 ...
  • 前言 Http我們都已經耳熟能詳了,而關於Http學習的文章網上有很多,各個知識點的講解也可說是深入淺出。然而,學習過後,我們對Http還是一知半解。問題出在了哪? Http是一個客戶機與伺服器之間的通信的協議,真的想學習Http,就必須把客戶機和伺服器也學了,也就是說,必須立體的學習,不然我們永遠 ...
  • 本人製作的這個 “簡易日誌 (SimpleLogger)” 包裡面包含的代碼邏輯,最開始也就是簡單地寫入文本,後來經過實際使用的演化,做了各種優化,添加了一些實用的特性,感覺用著還不錯。正所謂獨樂樂不如眾樂樂,於是將其打包上傳到微軟的包管理庫 NuGet 中,大家可以使用試試,相互交流。 ...
  • 1.需求示意圖 2.需求描述 原本是為了給做unity3d客戶端開發的同事提供不定時的消息推送,比如商城購買道具後服務端將道具信息推送給客戶端。 本篇文章簡化理解,用“相關部門開展活動,向全市人民徵集社會服務改善意見”為例子。但核心想法一致:單向推送(指這個需求上只需要單向)。所以這個功能並不是聊天 ...
  • 找到項目中ServiceStack.Text.dll文件的版本,比如我的版本是5.0.0,到GitHub上下載對應的源碼(https://github.com/ServiceStack/ServiceStack.Text/tags) 打開解決方案,重新生成ServiceStack.Text項目,如果 ...
  • 前言 上一篇文章主要介紹了IL的概念以及基礎的示例代碼,在這一篇文章中我們將通過對象調用看IL。 創建對象與調用方法 class Program { static void Main(string[] args) { var obj = new MyClass(); Console.WriteLin ...
  • abp版本5.9 概述 數據遷移無非就是兩件事情,1、創建資料庫,並根據實體創建對應的表;2、添加一些初始數據 abp的數據遷移也是完成這兩件事,比較特殊的是它是多租戶saas系統,而且支持不同的租戶有獨立的資料庫。所以abp中的遷移要先遷移戶主Host,再遷移租戶Tenant的資料庫 它的遷移定義 ...
  • 本文屬於OData系列 目錄 武裝你的WEBAPI-OData入門 武裝你的WEBAPI-OData便捷查詢 武裝你的WEBAPI-OData分頁查詢 武裝你的WEBAPI-OData資源更新Delta 武裝你的WEBAPI-OData之EDM 武裝你的WEBAPI-OData常見問題 武裝你的WE ...
  • 前言 面試總是會被問到有沒有用過分散式鎖、redis 鎖,大部分讀者平時很少接觸到,所以只能很無奈的回答 “沒有”。本文通過 Spring Boot 整合 redisson 來實現分散式鎖,並結合 demo 測試結果。 首先看下大佬總結的圖 正文 添加依賴 <!--redis--> <depende ...