Scanner类, Random类, ArrayList类

Scanner类&匿名对象
API概述和使用步骤
API: Application Programming Interface, 应用程序编程接口
        其实就是JDK中定义好的类和方法

API文档: 就是这些类和方法的说明. 类似于说明书, 字典
Scanner概述及其API文档的使用
引用类型的一般使用步骤:
    1. 导包: 实际上是导入包中的类  import 包名.类名;
        同一个包中的类不用导包
        java.lang包中的类不需要手动导包
        2. 创建对象
                类名 对象名 = new 类名();
        3. 使用方法
                对象名.成员方法名();
Scanner的使用步骤
java.util.Scanner: 可以解析基本类型和字符串的简单文本扫描器
        构造方法
                Scanner(InputStream source): 创建对象并指定输入流
        成员方法
                int nextInt(): 获取键盘录入的整数, 以int形式返回
                String next(): 获取键盘录入的数据, 以字符串形式返回 (以空白字符作为录入结束)
        补充:
                String nextLine(): 获取键盘录入的一行数据, 以字符串形式返回. (以换行符作为录入结束)
               

[Java] 纯文本查看 复制代码

?

1

2

3

4

5

6

7

8

Scanner使用步骤:

        1. 导包

                import java.util.Scanner;

        2. 创建对象

                Scanner sc = new Scanner(System.in);

        3. 调用方法

                int num = sc.nextInt();

                String str = sc.next();


补充:

 

[Java] 纯文本查看 复制代码

?

01

02

03

04

05

06

07

08

09

10

11

12

13

// 导包

import java.util.Scanner;

 

public class Test {

    public static void main(String[] args) {

        // 创建Scanner类的对象. System.in表示从标准输入流(键盘)获取数据

                Scanner sc = new Scanner(System.in);

                // 使用对象调用方法获取键盘录入的整数

                int i = sc.nextInt();

                // 使用对象调用方法获取键盘录入的字符串

                String s = sc.next();

    }

}



Scanner练习一: 键盘输入两个数字求和
5分钟练习:
需求: 键盘输入两个int数字,求和并打印结果
代码:

[Java] 纯文本查看 复制代码

?

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

import java.util.Scanner;

 

/*

需求: 键盘输入两个int数字,求和并打印结果

*/

public class Test {

    public static void main(String[] args) {

        // 创建Scanner对象

        Scanner sc = new Scanner(System.in);

 

        // 提示输入

        System.out.println("请输入第一个数字:");

        int a = sc.nextInt();

        System.out.println("请输入第二个数字:");

        int b = sc.nextInt();

 

        // 计算结果并打印

        int result = a + b;

        System.out.println("结果是:" + result);

    }

}



Scanner练习二: 键盘输入三个数字求最大值5分钟练习:
需求: 键盘输入三个int数字,求最大值并打印
代码
 

[Java] 纯文本查看 复制代码

?

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

/*

需求: 键盘输入三个int数字,求最大值并打印

*/

public class Test {

    public static void main(String[] args) {

        // 创建Scanner对象

        Scanner sc = new Scanner(System.in);

 

        // 提示输入

        System.out.println("请输入第一个数字:");

        int a = sc.nextInt();

        System.out.println("请输入第二个数字:");

        int b = sc.nextInt();

        System.out.println("请输入第三个数字:");

        int c = sc.nextInt();

 

        // 利用三元运算符比较

        int temp = a > b ? a : b;

        int max = temp > c ? temp : c;

 

        System.out.println("最大值:" + max);

    }

}


匿名对象的说明
匿名对象: 没有变量名的对象
  

[Java] 纯文本查看 复制代码

?

1

2

3

4

5

// 普通创建对象

  Person p = new Person();

 

  // 匿名对象

  new Person();



注意事项:
        匿名对象只能使用一次

使用场景:
        如果一个对象只使用一次, 就可以用匿名对象的形式

匿名对象的用途:
    1. 调用成员变量或成员方法
    2. 作为参数传递
    3. 作为返回值返回
匿名对象应用场景: 作为方法的参数和返回值
匿名对象也是对象, 所以也可以作为 参数 和 返回值
 

[Java] 纯文本查看 复制代码

?

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

public static void method(Scanner sc) {

        //...

}

 

// 调用方法

Scanner sc = new Scanner(System.in);

method(sc);   // 能否简化?

method(new Scanner(System.in));

 

 

public static Scanner method() {

    Scanner sc = new Scanner(System.in);

    return sc;  // 能否简化?

    return new Scanner(System.in);

}

import java.util.Scanner;

 

public class Demo02Anonymous {

 

    public static void main(String[] args) {

        // 普通创建对象方式

        Scanner sc = new Scanner(System.in);

        int num = sc.nextInt();

 

        // 匿名对象直接调用方法

        int num = new Scanner(System.in).nextInt();

 

        // 匿名对象作为参数

        methodParam(new Scanner(System.in));

 

                // 匿名对象作为方法返回值

        Scanner sc = methodReturn();

    }

 

    public static void methodParam(Scanner sc) {

        int num = sc.nextInt();

        System.out.println("输入的是:" + num);

    }

 

    public static Scanner methodReturn() {

        return new Scanner(System.in);

    }

}





Random类&对象数组Random概述和基本使用
java.util.Random: 用于生成随机数
        构造方法
                Random(): 创建对象
        成员方法
                int nextInt(): 生成范围是int范围的随机数, 包含正负
                int nextInt(int n): 生成一个 0~n (包含0不包含n)范围的随机数

使用步骤:
    1. 导包
    2. 创建对象
    3. 对象调用方法
 

[Java] 纯文本查看 复制代码

?

01

02

03

04

05

06

07

08

09

10

11

// 导包

import java.util.Random;

 

public class Test {

    public static void main(String[] args) {

        // 创建Random类的对象

        Random r = new Random();

        // 调用方法生成随机数

        int i = r.nextInt();

    }

}



Random生成指定范围的随机数
int nextInt(int n): 生成一个 0~n (包含0不包含n)范围的随机数

[Java] 纯文本查看 复制代码

?

01

02

03

04

05

06

07

08

09

10

11

// 导包

import java.util.Random;

 

public class Test {

    public static void main(String[] args) {

        // 创建Random类的对象

        Random r = new Random();

        // 调用方法生成随机数

        int i = r.nextInt(10);  // [0, 9]

    }

}




Random练习一: 生成1-n之间的随机数
知识点:
如何调整随机数的范围
[0-9] r.nextInt(10);
[1-10] r.nextInt(10) + 1;
[1-9] [0-8] + 1   r.nextInt(9) + 1;

总结:
通过 nextInt(参数) + 偏移量 来控制范围    Random r = new Random();    r.nextInt(n) + 1;
补充:
 

[Java] 纯文本查看 复制代码

?

1

2

3

4

5

// 说出随机数范围

r.nextInt(10);      // [0,9], [0,10)

r.nextInt(10) + 1// [1,10]

r.nextInt(10) - 1// [-1, 8]

r.nextInt(11);      // [0, 10]



Random练习二: 猜数字小游戏
5分钟练习:
需求: 用代码模拟猜数字[1,100]的小游戏
代码:

/*
需求: 用代码模拟猜数字[1,100]的小游戏
*/

[AppleScript] 纯文本查看 复制代码

?

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

public class Test {

    public static void main(String[] args) {

        // 创建Random对象

        Random r = new Random();

        int randomNum = r.nextInt(100) + 1// [1,100]

 

        // 创建Scanner对象

        Scanner sc = new Scanner(System.in);

 

        // 死循环猜

        while (true) {

            // 提示输入

            System.out.print("请输入一个数字:");

            int guess = sc.nextInt();

 

            // 判断

            if (guess > randomNum) {

                System.out.println("大了");

            } else if (guess < randomNum) {

                System.out.println("小了");

            } else {

                System.out.println("恭喜你, 猜中了");

                break; // 结束循环

            }

        }

 

        System.out.println("游戏结束");

    }

}



/*
限制次数的猜数字
*

[Java] 纯文本查看 复制代码

?

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

/

public class Test2 {

    public static void main(String[] args) {

        // 创建Random对象

        Random r = new Random();

        int randomNum = r.nextInt(100) + 1// [1,100]

 

        // 创建Scanner对象

        Scanner sc = new Scanner(System.in);

 

        // 定义一个布尔变量, 表示是否猜中

        boolean correct = false;

 

        // 限制10次

        for (int i = 0; i < 10; i++) {

            // 提示输入

            System.out.print("请输入一个数字:");

            int guess = sc.nextInt();

 

            // 判断

            if (guess > randomNum) {

                System.out.println("大了");

            } else if (guess < randomNum) {

                System.out.println("小了");

            } else {

                // 猜中后, 修改boolean变量为true

                correct = true;

                break; // 结束循环

            }

        }

 

        // 循环结束后, 根据布尔变量判断是否是猜对结束的, 还是没猜对结束的

        if (correct) {

            System.out.println("恭喜你, 猜中了");

        } else {

            System.out.println("抱歉, 次数已到");

        }

    }

}


对象数组
知识点:
数组中能存引用数据类型吗
对象数组中存放的是什么

[Java] 纯文本查看 复制代码

?

01

02

03

04

05

06

07

08

09

10

// 存储基本类型

int[] arr = {1,2,3};

 

// 存储字符串(String已经是引用数据类型了)

String[] arr = {"hello", "world"};

 

// 存储手机

Phone p1 = new Phone();

Phone p2 = new Phone();

Phone[] arr = {p1, p2};


总结:
对象数组: 元素是引用数据类型的数组.   
对象数组中存储的是引用数据类型的对象对象数组中存放的是 对象的地址值


ArrayList集合ArrayList集合概述和基本使用集合: 是一个统称. 与数组类型也是容器. 包含List, Set, Map三大类型

集合和数组的区别:
        数组一旦创建, 长度不可改变
        集合长度可以动态改变

java.util.ArrayList<E>: 是大小可变的数组的实现
        构造方法
                ArrayList<E>(): 创建对象, 并指定元素的数据类型
                E: 泛型, 规定集合中的元素是什么类型, 要替换为具体的引用类型
                        是一种安全机制, 用于在编译时期约束集合中元素的数据类型. 只能是引用数据类型
                        
                        ArrayList<类名> list = new ArrayList<>();
        成员方法
                boolean add(E e): 将指定的元素添加到此集合的尾部
                E remove(int index): 删除指定索引上的元素, 返回被删除的元素
                E get(int index): 获取指定索引上的元素
                int size(): 获取集合的长度(元素的个数)
        补充:
                E set(int index, E element): 修改指定索引上的元素, 返回被替换的元素


// 创建ArrayList对象, 将E替换为元素的数据类型
ArrayList<String> list = new ArrayList<String>();

// 从JDK 1.7开始, 右侧构造方法中的泛型类型可以省略, 但尖括号不能省略
ArrayList<String> list = new ArrayList<>();
ArrayList集合的常用方法和遍历
常用成员方法
        boolean add(E e): 将指定的元素添加到此集合的尾部
        E remove(int index): 删除指定索引上的元素, 返回被删除的元素
        E get(int index): 获取指定索引上的元素
        int size(): 获取集合的长度(元素的个数)
补充:
   
集合的遍历: 使用size()和get(int index)方法
 

[AppleScript] 纯文本查看 复制代码

?

1

2

3

4

5

6

7

8

9

E set(int index, E element): 修改指定索引上的元素, 返回被替换的元素

      

     ["a", "b", "c"]

     String b = list.set(1, "d");

     ["a", "d", "c"]

// 遍历集合

 for (int i = 0; i < list.size(); i++) {

     System.out.println(list.get(i));

 }



IDEA遍历集合快捷键: 集合名.fori

public class Demo03ArrayListMethod {

    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();

        // 向集合中添加元素:add
        boolean success = list.add("柳岩");

        // 从集合中获取元素:get。索引值从0开始
        String name = list.get(0);

        // 从集合中删除元素:remove。索引值从0开始。
        String whoRemoved = list.remove(0);

        // 获取集合的长度尺寸,也就是其中元素的个数
        int size = list.size();
    }
}

ArrayList集合存储基本数据类型
包装类: 是统称. 是基本数据类型对应的引用数据类型

从 JDK 1.5+ 开始,支持自动装箱、自动拆箱。
        自动装箱: 基本类型 --> 包装类型
        自动拆箱: 包装类型 --> 基本类型
        
        ArrayList<Integer> list = new ArrayList<>();  // 集合存储的是 Integer 类型的对象
        list.add(1);  // 1 -> Integer   int -> Integer
        int i = list.get(0);  // Integer -> int
基本数据类型

发布了965 篇原创文章 · 获赞 11 · 访问量 3万+

おすすめ

転載: blog.csdn.net/xiaoyaGrace/article/details/105285345