03- 01 Scanner類话速、Random類讶踪、ArrayList類

第1章 API


概述

API(Application Programming Interface),應用程序編程接口。Java API是一本程序員的字典泊交,是JDK中提供給我們使用的類的說明文檔乳讥。這些類將底層的代碼實現(xiàn)封裝了起來,我們不需要關心這些類是如何實現(xiàn)的廓俭,只需要學習這些類如何使用即可云石。所以我們可以通過查詢API的方式,來學習Java提供的類研乒,并得知如何使用它們汹忠。

API使用步驟

  1. 打開幫助文檔。
  2. 點擊顯示,找到索引宽菜,看到輸入框奖地。
  3. 你要找誰?在輸入框里輸入赋焕,然后回車参歹。
  4. 看包。java.lang下的類不需要導包隆判,其他需要犬庇。
  5. 看類的解釋說明
  6. 學習構造方法。
  7. 使用成員方法侨嘀。

第2章Scanner類


了解了API的使用方式臭挽,我們通過Scanner類,熟悉一下查詢API,并使用類的步驟咬腕。

2.1什么是Scanner類


一個可以解析基本類型和字符串的簡單文本掃描器欢峰。 例如,以下代碼使用戶能夠從 System.in 中讀取一個數(shù):

Scanner sc = new Scanner(System.in);
int i = sc.nextInt();

備注:System.in系統(tǒng)輸入指的是通過鍵盤錄入數(shù)據(jù)涨共。

2.2引用類型使用步驟


導包
使用import關鍵字導包纽帖,在類的所有代碼之前導包,引入要使用的類型举反,java.lang包下的所有類無需導入懊直。格 式:

import 包名.類名;

舉例:

java.util.Scanner火鼻;
創(chuàng)建對象

使用該類的構造方法室囊,創(chuàng)建一個該類的對象。 格式:

數(shù)據(jù)類型 變量名 = new 數(shù)據(jù)類型(參數(shù)列表)魁索;
舉例:

Scanner sc = new Scanner(System.in)融撞;

調用方法
調用該類的成員方法,完成指定功能。 格式:

變量名.方法名();

舉例:

int i = sc.nextInt(); // 接收一個鍵盤錄入的整數(shù)

2.3 Scanner使用步驟


查看類

  • java.util.Scanner:該類需要import導入后使用。

查看構造方法

  • public Scanner(InputStream source):構造一個新的Scanner ,它生成的值是從指定的輸入流掃描的。

查看成員方法

  • public int nextint():將輸入信息的下一個標記掃描為一個int值逼庞。
    使用Scanner類,完成接收鍵盤錄入數(shù)據(jù)的操作吗货,代碼如下:
//1. 導包
import java.util.Scanner;
public class Demo01_Scanner {
    public static void main(String[] args) {
        //2. 創(chuàng)建鍵盤錄入數(shù)據(jù)的對象
        Scanner sc = new Scanner(System.in);
        //3. 調用方法字逗,接收數(shù)據(jù)
        System.out.println ("請錄入一個整數(shù):");
        int i = sc.nextInt();
        //4. 對數(shù)據(jù)進行輸出處理
        System.out.println("i:"+i);
    }
}

2.4 練習


求和
鍵盤錄入兩個數(shù)據(jù)并求和,代碼如下:

import java.util.Scanner;
public class Test01Scanner { 
    public static void main(String[] args) {
        // 創(chuàng)建對象
        Scanner sc = new Scanner(System.in);
        // 接收數(shù)據(jù)
        System.out.println("請輸入第一個數(shù)據(jù):");
        int a = sc.nextInt();
        System.out.println("請輸入第二個數(shù)據(jù):");
        int b = sc.nextInt();
        // 對數(shù)據(jù)進行求和
        int sum = a + b; 
        System.out.println("sum:" + sum)醒陆;
    }
}

取最值

鍵盤錄入三個數(shù)據(jù)并獲取最大值瀑构,代碼如下:

import java.util.Scanner;
public class Test02Scanner {
    public static void main(String[] args) { 
        // 創(chuàng)建對象
        Scanner sc = new Scanner(System.in);
        // 接收數(shù)據(jù)
        System.out.println("請輸入第一個數(shù)據(jù):");
        int a = sc.nextInt()寺晌;
        System.out.println("請輸入第二個數(shù)據(jù):");
        int b = sc.nextInt()世吨;
        System.out.println("請輸入第三個數(shù)據(jù):");
        int c = sc.nextInt();
        // 如何獲取三個數(shù)據(jù)的最大值
        int temp = (a > b ? a : b); 
        int max = (temp > c ? temp : c);
        System.out.println("max:" + max);
    }
}

判斷奇偶

鍵盤錄入一個整數(shù)呻征,判斷該整數(shù)的奇偶耘婚,代碼如下:

//導包
import java.util.Scanner;
class JudgeOddOrEven{
    public static void main(String[] args) {
        //鍵盤錄入一個整數(shù),判斷該整數(shù)的奇偶
        //創(chuàng)建鍵盤錄入對象
        Scanner sc = new Scanner(System.in);
        System.out.println("請輸入一個整數(shù)");
        //調用錄入整數(shù)的方法
        int a = sc.nextInt();
        //判斷 a  它的奇偶性
        System.out.println(a % 2 == 0 ? "偶數(shù)" : "奇數(shù)");
    }
}

2.5 匿名對象【了解】


概念

創(chuàng)建對象時陆赋,只有創(chuàng)建對象的語句沐祷,卻沒有把對象地址值賦值給某個變量。雖然是創(chuàng)建對象的簡化寫法攒岛,但是應用場景非常有限赖临。

  • 匿名對象:沒有變量名的對象。
    格式:

new類名(參數(shù)列表)灾锯;

舉例:

new Scanner(System.in);
應用場景
  1. 創(chuàng)建匿名對象直接調用方法兢榨,沒有變量名。
new Scanner(System.in).nextInt();
  1. 一旦調用兩次方法顺饮,就是創(chuàng)建了兩個對象吵聪,造成浪費,請看如下代碼兼雄。
new Scanner(System.in).nextInt();
new Scanner(System.in).nextInt();

小貼士:一個匿名對象暖璧,只能使用一次。

  1. 匿名對象可以作為方法的參數(shù)和返回值
  • 作為參數(shù):
class Test {
    public static void main(String[] args) { 
        // 普通方式
        Scanner sc = new Scanner(System.in); input(sc);
        // 匿名對象作為方法接收的參數(shù) 
        input(new Scanner(System.in));
    }

    public static void input(Scanner sc){ 
        System.out.println(sc);
    }
}

?作為返回值

class Test2 {
    public static void main(String[] args) {
        // 普通方式
        Scanner sc = getScanner();
    }

    public static Scanner getScanner(){
        // 普通方式
        //Scanner sc = new Scanner(System.in); 
        //return sc;

        // 匿名對象作為方法返回值
        return new Scanner(System.in);
    }
}

第3章 Random類


3.1 什么是Random類


此類的實例用于生成偽隨機數(shù)君旦。
例如澎办,以下代碼使用戶能夠得到一個隨機數(shù):

Random r = new Random();
int i = r.nextInt();

3.2 Random使用步驟

查看類

  • java.util.Random:該類需要import導入使后使用。
    查看構造方法
  • public Random():創(chuàng)建一個新的隨機數(shù)生成器金砍。
    查看成員方法
  • public int nextint (int n):返回一個偽隨機數(shù)局蚀,范圍在0 (包括)和指定值n (不包括)之間的 int 值。
    使用Random類恕稠,完成生成3個10以內的隨機整數(shù)的操作琅绅,代碼如下:
//1. 導包
import java.util.Random;
public class Demo01_Random {
    public static void main(String[] args) {
        //2. 創(chuàng)建鍵盤錄入數(shù)據(jù)的對象
        Random r = new Random();

        for(int i = 0; i < 3; i++){
            //3. 隨機生成一個數(shù)據(jù)
            int number = r.nextint(10);
            //4. 輸出數(shù)據(jù)
            System.out.println("number:"+ number);
        }
    }
}

備注:創(chuàng)建一個Random對象,每次調用nextint()方法鹅巍,都會生成一個隨機數(shù)千扶。

3.3練習


獲取隨機數(shù)
獲取1-n之間的隨機數(shù),包含n,代碼如下:

// 導包
import java.util.Random;
public class Test01Random {
    public static void main(String[] args) {
        int n = 50;
        // 創(chuàng)建對象
        Random r = new Random();
        // 獲取隨機數(shù)
        int number = r.nextInt(n) + 1;
        // 輸出隨機數(shù)
        System.out.println("number:" + number);
    }
}

猜數(shù)字小游戲
游戲開始時骆捧,會隨機生成一個1-100之間的整數(shù)number澎羞。玩家猜測一個數(shù)字guessNumber ,會與number作比較,系統(tǒng)提示大了或者小了敛苇,直到玩家猜中妆绞,游戲結束。

小貼士:先運行程序代碼,理解此題需求括饶,經(jīng)過分析后株茶,再編寫代碼

// 導包
import java.util.Random;
public class Test02Random { 
    public static void main(String[] args) {
        //系統(tǒng)產(chǎn)生一個隨機數(shù)1-100之間的。
        Random r = new Random();
        int number = r.nextInt(100) + 1;
        while(true){
            // 鍵盤錄入我們要猜的數(shù)據(jù)
            Scanner sc = new Scanner(System.in);
            System. out. println ("請輸入你要猜的數(shù)字(1-100):")图焰; 
            int guessNumber = sc.nextInt();

            //比較這兩個數(shù)據(jù)(用if語句) 
            if (guessNumber > number) {
                System.out.println("你猜的數(shù)據(jù)"+ guessNumber + "大 了")启盛; }
            else if (guessNumber < number) {
                System.out.println("你猜的數(shù)據(jù)"+ guessNumber + "小了 "); } 
            else {
                System.out.println ("恭喜你,猜中了"); 
                break技羔;
              }
          }
      }
  }

第4章 ArrayList 類


4.1 引入——對象數(shù)組


使用學生數(shù)組僵闯,存儲三個學生對象,代碼如下:

public class Student {
    private String name;
    private int age;
    public Student() {
    }
    public Student(String name, int age) { 
        this.name = name;
        this.age = 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 class Test01StudentArray {
    public static void main(String[] args) {
        // 創(chuàng)建學生數(shù)組
        Student[] students = new Student[3];

        // 創(chuàng)建學生對象
        Student si = new Student("曹操"堕阔,40);
        Student s2 = new Student("劉備",35);
        Student s3 = new Student("孫權"棍厂,30);

        // 把學生對象作為元素賦值給學生數(shù)組 
        students[0] = s1;
        students[1] = s2;
        students[2] = s3;

        // 遍歷學生數(shù)組
        for(int x=0; x<students.length; x++) {
            Student s = students[x];
            System.out.println(s.getName()+"——"+s.getAge()); 
        }
    }
}

到目前為止,我們想存儲對象數(shù)據(jù)超陆,選擇的容器牺弹,只有對象數(shù)組。而數(shù)組的長度是固定的时呀,無法適應數(shù)據(jù)變化的需
求张漂。為了解決這個問題,Java提供了另一個容器java.util.ArrayList集合類谨娜,讓我們可以更便捷的存儲和操作對象數(shù)據(jù)航攒。

4.2什么是ArrayList類


java.util.ArrayList大小可變的數(shù)組的實現(xiàn),存儲在內的數(shù)據(jù)稱為元素趴梢。此類提供一些方法來操作內部存儲 的元素漠畜。ArrayList中可不斷添加元素,其大小也自動增長坞靶。

4.3 ArrayList使用步驟


查看類

  • java.util.ArrayList <E> :該類需要 import導入使后使用憔狞。
    <E>,表示一種指定的數(shù)據(jù)類型彰阴,叫做泛型瘾敢。E,取自Element (元素)的首字母尿这。在出現(xiàn)E的地方簇抵,我們使用一種引用數(shù)據(jù)類型將其替換即可,表示我們將存儲哪種引用類型的元素射众。代碼如下:

ArrayList<String>, ArrayList<Student>

查看構造方法

  • public ArrayList():構造一個內容為空的集合碟摆。

基本格式:

ArrayList<String> list = new ArrayList<String>();

在JDK 7后,右側泛型的尖括號之內可以留空责球,但是<>仍然要寫焦履。簡化格式:

ArrayList<String> list = newArrayList<>();

查看成員方法

  • public boolean add(E e):將指定的元素添加到此集合的尾部拓劝。
    參數(shù)E e雏逾,在構造ArrayList對象時嘉裤,<E>指定了什么數(shù)據(jù)類型,那么add(E e)方法中栖博,只能添加什么數(shù)據(jù)類型的對象屑宠。

使用ArrayList類,存儲三個字符串元素仇让,代碼如下:

public class Test02StudentArrayList { 
    public static void main(String[] args) {
        // 創(chuàng)建學生數(shù)組
        ArrayList<String> list = new ArrayList<>();

        // 創(chuàng)建學生對象
        String s1 = "曹操";
        String s2 = "劉備";
        String s3 = " 孫權 ";

        //打印學生ArrayLis t集合
         System.out.println(list);

        //把學生對象作為元素添加到集合
        list.add(s1);
        list.add(s2);
        list.add(s3);?

        //打印學生ArrayList集合
        System.out.println(list)典奉; 
    }
}

4.4 常用方法和遍歷


對于元素的操作,基本體現(xiàn)在——增、刪丧叽、查卫玖。常用的方法有:

  • public boolean add(E e):將指定的元素添加到此集合的尾部。
  • public E remove(int index):移除此集合中指定位置上的元素踊淳。返回被刪除的元素假瞬。
  • public E get(int index):返回此集合中指定位置上的元素。返回獲取的元素迂尝。
  • public int size():返回此集合中的元素數(shù)脱茉。遍歷集合時,可以控制索引范圍垄开,防止越界琴许。
    這些都是最基本的方法,操作非常簡單溉躲,代碼如下:
public class Demo01ArrayListMethod {
    public static void main(String[] args) {
        //創(chuàng)建集合對象
        ArrayList<String> list = new ArrayList<String>()榜田;

        //添加元素
        list.add("hello");
        list.add("world")锻梳;
        list.add("java")箭券;

        //public E get(int index):返回指定索引處的元素
        System.out.println("get:"+list.get(0));
        System.out.println("get:"+list.get(1))唱蒸;
        System.out.println("get:"+list.get(2))邦鲫;

        //public int size():返回集合中的元素的個數(shù)
        System.out.println("size:"+list.size());

        //public E remove(int index):刪除指定索引處的元素神汹,返回被刪除的元素
        System.out.println("remove:"+list.remove(0))庆捺;

        //遍歷輸出
        for(int i = 0; i < list.size()屁魏; i++){
            System.out.println(list.get(i))滔以;
        }
    }
}

4.5如何存儲基本數(shù)據(jù)類型


ArrayList對象不能存儲基本類型,只能存儲引用類型的數(shù)據(jù)氓拼。類似<int>不能寫你画,但是存儲基本數(shù)據(jù)類型對應的包裝類型是可以的抵碟。所以,想要存儲基本類型數(shù)據(jù)坏匪,<> 中的數(shù)據(jù)類型拟逮,必須轉換后才能編寫,轉換寫法如下:

基本類型 基本類型包裝類

byte Byte
short Short
int Integer
long Long
float Float
double Double
cha r Character
boolean Boolean

我們發(fā)現(xiàn)适滓,只有Integer和Character需要特殊記憶敦迄,其他基本類型只是首字母大寫即可。那么存儲基本類型數(shù)據(jù)凭迹,代碼如下:

public class Demo02ArrayListMethod { 
    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<Integer>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        System.out.println(list);
    }
}

4.6 ArrayList 練習


數(shù)值添加到集合
生成6個1~33之間的隨機整數(shù)罚屋,添加到集合,并遍歷

public class Test01ArrayList { 
    public static void main(String[] args) {
        //創(chuàng)建Random對象
        Random random = new Random();

        // 創(chuàng) 建ArrayList 對象
        ArrayList<Integer> list = new ArrayList<>();

        // 添加隨機數(shù)到集合
        for (int i = 0; i < 6; i++) {
            int r = random?nextInt(33) + 1; 
            list.add(r);
        }

        // 遍歷集合輸出
        for (int i = 0; i < list.size(); i++) {
             System.out.println(list.get(i));
        }
    }
}

對象添加到集合
自定義4個學生對象,添加到集合,并遍歷

public class Test02ArrayList { 
    public static void main(String[] args) { 
        // 創(chuàng)建集合對象
        ArrayList<Student> list = new ArrayList<Student>();

        // 創(chuàng)建學生對象
        Student s1 = new Student(" 趙麗穎 ",18);
        Student s2 = new Student(" 唐嫣 ",20);
        Student s3 = new Student(" 景甜 ",25);
        Student s4 = new Student(" 柳巖 ",19);
        // 把學生對象作為元素添加到集合中 
        list.add(s1);
        list.add(s2);
        list.add(s3);
        list.add(s4);
        // 遍歷集合
        for(int x = 0; x < list.size(); x++) {
            Student s = list.get(x);
            System .out .println(s .getName ()+"——"+s .getAge ());
        }
    }
}

打印集合方法
定義以指定格式打印集合的方法(ArrayList類型作為參數(shù))嗅绸,使用{}擴起集合脾猛,使用@分隔每個元素。格式參照{元素 @元素@元素}鱼鸠。

public class Test03ArrayList {
    public static void main(String[] args) {
        // 創(chuàng)建集合對象
        ArrayList<String> list = new ArrayList<String>();

        // 添加字符串到集合中
        lis t.add("張三豐")猛拴;
        lis t.add("宋遠橋");?
        list.add ("張無忌")瞧柔;
        lis t.add("殷梨亭")漆弄;
        // 調用方法
        printArrayList(list);
        }
    public static void printArrayList(ArrayList<String> list) {
        // 拼接左括號
        System?out?print("{")造锅;
        // 遍歷集合
        for (int i = 0;i < list.size(); i++) {
            // 獲取元素
            String s = list.get(i)撼唾;
            // 拼接@符號
            if (i != list.size() - 1) {
                System.out.print(s + "@");
            } else {
                // 拼接右括號
                System.out.print(s + "}")哥蔚;
            }
        }
    }
}

獲取集合方法
定義獲取所有偶數(shù)元素集合的方法(Arr ayList類型作為返回值)

public class Test04ArrayList {
    public static void main(String[] args) {
        //創(chuàng)建Random對象
        Random random = new Random();
        // 創(chuàng) 建ArrayList 對象
        ArrayList<Integer> list = new ArrayList<>()倒谷;

        // 添加隨機數(shù)到集合
        for (int i = 0; i < 20; i++) {
            int r = random.nextInt(1000) + 1;
            list.add(r);
        }

        // 調用偶數(shù)集合的方法
        ArrayList<Integer> arrayList = getArrayList(list); 
        System.out.println(arrayList)糙箍;
    }
    public static ArrayList<Integer> getArrayList(ArrayList<Integer> list) { 
        // 創(chuàng)建小集合,來保存偶數(shù)
        ArrayList<Integer> smallList = new ArrayList<>()渤愁;

        //遍歷list
        for (int i = 0; i < list.size(); i++) {
        // 獲取元素?
        Integer num = list.get(i);
        // 判斷為偶數(shù),添加到小集合中
        if (num % 2 == 0){
            smallList.add(num);
        }
    }
    // 返回小集合
    return smallList;
  }
}
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市深夯,隨后出現(xiàn)的幾起案子抖格,更是在濱河造成了極大的恐慌,老刑警劉巖咕晋,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件雹拄,死亡現(xiàn)場離奇詭異,居然都是意外死亡掌呜,警方通過查閱死者的電腦和手機滓玖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來质蕉,“玉大人势篡,你說我怎么就攤上這事翩肌。” “怎么了禁悠?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵念祭,是天一觀的道長。 經(jīng)常有香客問我绷蹲,道長棒卷,這世上最難降的妖魔是什么顾孽? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任祝钢,我火速辦了婚禮,結果婚禮上若厚,老公的妹妹穿的比我還像新娘拦英。我一直安慰自己,他們只是感情好测秸,可當我...
    茶點故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布疤估。 她就那樣靜靜地躺著,像睡著了一般霎冯。 火紅的嫁衣襯著肌膚如雪铃拇。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天沈撞,我揣著相機與錄音慷荔,去河邊找鬼。 笑死缠俺,一個胖子當著我的面吹牛显晶,可吹牛的內容都是我干的。 我是一名探鬼主播壹士,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼磷雇,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了躏救?” 一聲冷哼從身側響起唯笙,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎盒使,沒想到半個月后崩掘,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡忠怖,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年呢堰,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片凡泣。...
    茶點故事閱讀 38,100評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡枉疼,死狀恐怖皮假,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情骂维,我是刑警寧澤惹资,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站航闺,受9級特大地震影響褪测,放射性物質發(fā)生泄漏。R本人自食惡果不足惜潦刃,卻給世界環(huán)境...
    茶點故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一侮措、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧乖杠,春花似錦分扎、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至卫漫,卻和暖如春菲饼,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背列赎。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工宏悦, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人粥谬。 一個月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓肛根,卻偏偏與公主長得像,于是被迫代替她去往敵國和親漏策。 傳聞我的和親對象是個殘疾皇子派哲,可洞房花燭夜當晚...
    茶點故事閱讀 42,834評論 2 345