A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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] 纯文本查看 复制代码
Scanner使用步骤:
        1. 导包
                import java.util.Scanner;
        2. 创建对象
                Scanner sc = new Scanner(System.in);
        3. 调用方法
                int num = sc.nextInt();
                String str = sc.next();

补充:


[Java] 纯文本查看 复制代码
// 导包
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] 纯文本查看 复制代码
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] 纯文本查看 复制代码
/*
需求: 键盘输入三个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] 纯文本查看 复制代码
  // 普通创建对象
    Person p = new Person();

    // 匿名对象
    new Person();


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

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

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

[Java] 纯文本查看 复制代码
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] 纯文本查看 复制代码
// 导包
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] 纯文本查看 复制代码
// 导包
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] 纯文本查看 复制代码
// 说出随机数范围
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] 纯文本查看 复制代码
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] 纯文本查看 复制代码
/
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] 纯文本查看 复制代码
// 存储基本类型
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] 纯文本查看 复制代码
    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
基本数据类型

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马