常用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
  • .Net8.0 Blazor Hybird 桌面端 (WPF/Winform) 實測可以完整運行在 win7sp1/win10/win11. 如果用其他工具打包,還可以運行在mac/linux下, 傳送門BlazorHybrid 發佈為無依賴包方式 安裝 WebView2Runtime 1.57 M ...
  • 目錄前言PostgreSql安裝測試額外Nuget安裝Person.cs模擬運行Navicate連postgresql解決方案Garnet為什麼要選擇Garnet而不是RedisRedis不再開源Windows版的Redis是由微軟維護的Windows Redis版本老舊,後續可能不再更新Garne ...
  • C#TMS系統代碼-聯表報表學習 領導被裁了之後很快就有人上任了,幾乎是無縫銜接,很難讓我不想到這早就決定好了。我的職責沒有任何變化。感受下來這個系統封裝程度很高,我只要會調用方法就行。這個系統交付之後不會有太多問題,更多應該是做小需求,有大的開發任務應該也是第二期的事,嗯?怎麼感覺我變成運維了?而 ...
  • 我在隨筆《EAV模型(實體-屬性-值)的設計和低代碼的處理方案(1)》中介紹了一些基本的EAV模型設計知識和基於Winform場景下低代碼(或者說無代碼)的一些實現思路,在本篇隨筆中,我們來分析一下這種針對通用業務,且只需定義就能構建業務模塊存儲和界面的解決方案,其中的數據查詢處理的操作。 ...
  • 對某個遠程伺服器啟用和設置NTP服務(Windows系統) 打開註冊表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer 將 Enabled 的值設置為 1,這將啟用NTP伺服器功 ...
  • title: Django信號與擴展:深入理解與實踐 date: 2024/5/15 22:40:52 updated: 2024/5/15 22:40:52 categories: 後端開發 tags: Django 信號 松耦合 觀察者 擴展 安全 性能 第一部分:Django信號基礎 Djan ...
  • 使用xadmin2遇到的問題&解決 環境配置: 使用的模塊版本: 關聯的包 Django 3.2.15 mysqlclient 2.2.4 xadmin 2.0.1 django-crispy-forms >= 1.6.0 django-import-export >= 0.5.1 django-r ...
  • 今天我打算整點兒不一樣的內容,通過之前學習的TransformerMap和LazyMap鏈,想搞點不一樣的,所以我關註了另外一條鏈DefaultedMap鏈,主要調用鏈為: 調用鏈詳細描述: ObjectInputStream.readObject() DefaultedMap.readObject ...
  • 後端應用級開發者該如何擁抱 AI GC?就是在這樣的一個大的浪潮下,我們的傳統的應用級開發者。我們該如何選擇職業或者是如何去快速轉型,跟上這樣的一個行業的一個浪潮? 0 AI金字塔模型 越往上它的整個難度就是職業機會也好,或者說是整個的這個運作也好,它的難度會越大,然後越往下機會就會越多,所以這是一 ...
  • @Autowired是Spring框架提供的註解,@Resource是Java EE 5規範提供的註解。 @Autowired預設按照類型自動裝配,而@Resource預設按照名稱自動裝配。 @Autowired支持@Qualifier註解來指定裝配哪一個具有相同類型的bean,而@Resourc... ...