一文带你了解Java中的Scanner键盘输入关键字、random 随机数关键字、System类和匿名函数

简介: 本文比较偏向基础,适合初学者观看学习参考。本文主要详细的介绍了Scanner 键盘输入、random 随机数 、System类、匿名函数。并且文中通过举例代码实战的方式,让你对这些关键字的理解更加的深刻。

Scanner 键盘输入

Scanner类的功能:可以实现键盘输入数据,到程序当中。

引用类型的一般使用步骤:

1.导包
import 包路径.包名称
如果需要使用目标类,和当前类位于同一个包下,则可以省略导包语句不写。
只有java.long包下的内容不需要导包,其他的包都需要imrort语句。

2. 创建
类名称 对象名 = new 类名称();

3. 使用 对象名.成员方法名;

获取键盘输入的一个int数字: int 变量名 = 对象名.nextInt();
获取键盘输入的一个字符串:String 变量名 = 对象名.next();

举例配合理解:

import java.util.Scanner; // 1. 导包  万年不变

public class day1 {
    public static void main(String[] args) {
        // 2. 创建
        // 备注:System.in 代表从键盘输入 现阶段不变写法
        Scanner sc = new Scanner(System.in);

        //3. 获取键盘输入的int数字
        int num = sc.nextInt();
        System.out.println("输入的数字是:"+num);

         //4.获取键盘输入的字符串
        String str = sc.next();
        System.out.println("输入的字符串是:"+str);
    }
}

练习一

题目:键盘输入两个int数字,并求出和值
/*
思路:
1. 既然要键盘输入,就用Scanner
2. Scanner的三个步骤:导包、创建、使用
3. 需要的是两个数字,所以要调用两次nextInt方法
4. 得到了两个数字,就需要加在一起
5. 将结果打印输出
 */

import java.util.Scanner;

public class 练习一 {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("输入第一个数字:");
        int a = sc.nextInt();
        System.out.println("输入第二个数字:");
        int b = sc.nextInt();
        int c= a+b;
        System.out.println("结果是:"+c);
    }

练习二

题目: 键盘输入三个int数字,然后求出其中的最大值
/*
思路:
1. 既然要键盘输入,就用Scanner
2. Scanner的三个步骤:导包、创建、使用
3. 需要的是三个数字,所以要调用三次nextInt方法,得到三个int变量
4. 无法同时判断三个数字谁最大,应该转换成为两个步骤
    4.1 首先判断出前两个当中谁最大,拿到前两个的最大值
    4.2 拿着前两个的最大值,再和第三个数字比较,得到三个数字当中的最大值
5. 将结果打印输出
 */

import java.util.Scanner;

public class 练习2 {
    public static void main(String[] args) {
        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);

    }
}

random 随机数

Random类用来生成随机数字。

使用起来也是三个步骤:

1.导包
import java.util.Random;

2.创建
Random r = new Random(); //小括号当中留空即可

3.使用
获取一个随机的int数字(范围是int所有范围,有正负两种): int num=r.nextInt()
获取一个随机的int数字(参数代表了范围,左闭右开区间):int num=p.nextInt(3),实际上代表的含义是:[0,3),也就是0~2

举例配合理解:


import java.util.Random;

public class day01 {
    public static void main(String[] args) {
        Random so = new Random();
        int num = so.nextInt();
        System.out.println(num);

        for (int i = 0; i < 10; i++) {
            int aa = so.nextInt(50); //实际范围是0——49
            System.out.println(aa);
        }

    }
}

练习一

题目:生成1-n之间的随机数

import java.util.Random;

//题目:生成[1-n]之间的随机数
public class 练习一yi {
    public static void main(String[] args) {
        int n = 5;
        Random aa = new Random();
        for (int i = 0; i < 10; i++) {
            int num = aa.nextInt(n)+1; //本来范围是[0-n),整体加1后变成[1-n+1),也就是[1-n]
            System.out.println(num);
        }

    }
}

System类

java.lang.System类中提供了大量的静态方法,可以获取与系统相关的信息或系统级操作,在System类的API文档中,常用的方法有:
public static long currentTimeMillis():返回以毫秒为单位的当前时间。
public static void arraycopy(Object src , int srcPos , Obiect dest , int destPos , int length):将数组中指定的数据拷贝到另一个数组中。
public class 常用方法 {
    public static void main(String[] args) {
        demo02();
    }

    private static void demo01() {
        /*
            public static long currentTimeMillis():返回毫秒为单位的当前时间
            用来测试程序的效率
            例:验证for循环打印数字1-9999所需要的时间(毫秒)
         */
        //程序执行前获取一次毫秒值
        long l = System.currentTimeMillis();
        for (int i = 0; i < 9999; i++) {
            System.out.println(i);
        }
        //程序执行后获取一次毫秒值
        long l1 = System.currentTimeMillis();
        System.out.println("程序共耗时:"+(l1-l)+"毫秒");
    }

    private static void demo02() {
        /*
            public static void arraycopy(Object src,int srcPos,Object dest,int desPos,int length):
            将数组中指定的数据拷贝到另一个数组中
            参数:
                src: 源数组
                srcPos: 源数组中的起始位置(起始索引)
                dest: 目标数组
                destPos: 目标数组中的起始位置(起始索引)
                Length: 要复制的数组元素的数量

             练习:
                  将src数组中前三个元素,复制到dest数组的前三个位置上
                  复制元素前:src数组[1,2,3,4,5]; dest数组[6,7,8,9,10]
                  复制元素后:src数组[1,2,3,4,5]; dest数组[1,2,3,9,10]
         */
        //定义源数组
        int src [] = {1,2,3,4,5};
        //定义目标数组
        int dest[] = {6,7,8,9,10};
        System.out.println(Arrays.toString(dest));//复制前 [6, 7, 8, 9, 10]
        //使用System类的arraycopy方法,把源数组的前三个元素复制到目标数组的前三个位置
        System.arraycopy(src,0,dest,0,3);
        System.out.println(Arrays.toString(dest)); //复制后[1, 2, 3, 9, 10]
    }
}

匿名函数

匿名对象: 就是只有右边的对象,没有左边的名字和赋值运算符。

格式:new 类名称();

注意事项:匿名对象只能使用唯一一次,下次再用不得不再创建一个新对象。

使用建议:如果确定有一个对象只需要使用唯一的一次,就可以用匿名对象。

举例深刻理解:

public class 匿名对象 {

    public static void main(String[] args) {
        //普通使用方式
          Scanner sc = new Scanner(System.in);
          int nuw = sc.nextInt();

        //匿名对象使用格式
          int num =new Scanner(System.in).nextInt();
          System.out.println("输入的是:"+num);

        //使用一般写法传入参数
          Scanner sc = new Scanner(System.in);
          mettodparam(sc);

        //使用匿名对象传参
          mettodparam(new Scanner(System.in));

        //接收匿名对象返回值
        Scanner sc= methodReturn();
        int num = sc.nextInt();
        System.out.println("输入的是:"+num);
    }

    //Scanner作为参数
    public static void mettodparam(Scanner sc){
        int num = sc.nextInt();
        System.out.println("输入的是:"+num);
    }

    //Scaanner 作为返回值
    public static Scanner methodReturn(){
//        Scanner sc = new Scanner(System.in);
//        return sc;
        return new Scanner(System.in);
    }
}
相关文章
|
12天前
|
安全 Java API
告别繁琐编码,拥抱Java 8新特性:Stream API与Optional类助你高效编程,成就卓越开发者!
【8月更文挑战第29天】Java 8为开发者引入了多项新特性,其中Stream API和Optional类尤其值得关注。Stream API对集合操作进行了高级抽象,支持声明式的数据处理,避免了显式循环代码的编写;而Optional类则作为非空值的容器,有效减少了空指针异常的风险。通过几个实战示例,我们展示了如何利用Stream API进行过滤与转换操作,以及如何借助Optional类安全地处理可能为null的数据,从而使代码更加简洁和健壮。
40 0
|
4天前
|
Java API 开发者
【Java字节码操控新篇章】JDK 22类文件API预览:解锁Java底层的无限可能!
【9月更文挑战第6天】JDK 22的类文件API为Java开发者们打开了一扇通往Java底层世界的大门。通过这个API,我们可以更加深入地理解Java程序的工作原理,实现更加灵活和强大的功能。虽然目前它还处于预览版阶段,但我们已经可以预见其在未来Java开发中的重要地位。让我们共同期待Java字节码操控新篇章的到来!
|
2天前
|
Java
Java 对象和类
在Java中,**类**(Class)和**对象**(Object)是面向对象编程的基础。类是创建对象的模板,定义了属性和方法;对象是类的实例,通过`new`关键字创建,具有类定义的属性和行为。例如,`Animal`类定义了`name`和`age`属性及`eat()`、`sleep()`方法;通过`new Animal()`创建的`myAnimal`对象即可调用这些方法。面向对象编程通过类和对象模拟现实世界的实体及其关系,实现问题的结构化解决。
|
1天前
|
Java API 开发者
【Java字节码的掌控者】JDK 22类文件API:解锁Java深层次的奥秘,赋能开发者无限可能!
【9月更文挑战第8天】JDK 22类文件API的引入,为Java开发者们打开了一扇通往Java字节码操控新世界的大门。通过这个API,我们可以更加深入地理解Java程序的底层行为,实现更加高效、可靠和创新的Java应用。虽然目前它还处于预览版阶段,但我们已经可以预见其在未来Java开发中的重要地位。让我们共同期待Java字节码操控新篇章的到来,并积极探索类文件API带来的无限可能!
|
13天前
|
机器学习/深度学习 人工智能 算法
探索人工智能在医疗诊断中的应用与挑战Java编程中的对象和类:基础与实践
【8月更文挑战第27天】随着人工智能(AI)技术的飞速发展,其在医疗领域的应用日益广泛。本文深入探讨了AI技术在医疗诊断中的具体应用案例,包括图像识别、疾病预测和药物研发等方面,并分析了当前面临的主要挑战,如数据隐私、算法偏见和法规限制等。文章旨在为读者提供一个全面的视角,理解AI在改善医疗服务质量方面的潜力及其局限性。
|
9天前
|
存储 Java
Java编程中的对象和类
在Java的世界中,“对象”与“类”是构建一切的基础。就像乐高积木一样,类定义了形状和结构,而对象则是根据这些设计拼装出来的具体作品。本篇文章【8月更文挑战第31天】 将通过一个简单的例子,展示如何从零开始创建一个类,并利用它来制作我们的第一个Java对象。准备好让你的编程之旅起飞了吗?让我们一起来探索这个神奇的过程!
|
12天前
|
缓存 安全 Java
Java String类
Java String类
12 0
|
3月前
|
缓存 安全 Java
《volatile使用与学习总结:》多层面分析学习java关键字--volatile
《volatile使用与学习总结:》多层面分析学习java关键字--volatile
24 0
|
4月前
|
安全 Java 编译器
Java多线程基础-6:线程安全问题及解决措施,synchronized关键字与volatile关键字(一)
线程安全问题是多线程编程中最典型的一类问题之一。如果多线程环境下代码运行的结果是符合我们预期的,即该结果正是在单线程环境中应该出现的结果,则说这个程序是线程安全的。 通俗来说,线程不安全指的就是某一代码在多线程环境下执行会出现bug,而在单线程环境下执行就不会。线程安全问题本质上是由于线程之间的调度顺序的不确定性,正是这样的不确定性,给我们的代码带来了很多“变数”。 本文将对Java多线程编程中,线程安全问题展开详细的讲解。
72 0
|
4月前
|
存储 安全 Java
【亮剑】Java并发编程涉及`ThreadLocal`、`Volatile`、`Synchronized`和`Atomic`四个关键机制
【4月更文挑战第30天】Java并发编程涉及`ThreadLocal`、`Volatile`、`Synchronized`和`Atomic`四个关键机制。`ThreadLocal`为每个线程提供独立变量副本;`Volatile`确保变量可见性,但不保证原子性;`Synchronized`实现同步锁,保证单线程执行;`Atomic`类利用CAS实现无锁并发控制。理解其原理有助于编写高效线程安全代码。根据业务场景选择合适机制至关重要。
32 0
下一篇
DDNS