JavaSE 6:api概述、Scanner类、Random类、ArrayList类

目录

 

内容提要

API

API是什么

API如何使用

Scanner类

概述

使用步骤

导包

创建对象

调用方法

举例

匿名对象

Random类

概述

使用步骤

查看类

查看构造方法

查看成员方法

使用举例

ArrayList类

概述

使用步骤

常用方法

举例


内容提要

  • API使用概述
  • 使用Scanner从键盘中获取输入
  • 使用Random类生成指定要求得随机数
  • 使用ArrayList创建集合对象,学会使用相关方法操作对象,以及将ArrayList应用在方法中

API

API是什么

API(Application Programming Interface),即应用程序编程接口,是程序员的“字典”,是JDK中提供的类的说明文档。这些类将底层的代码实现封装,通过API文档可以学习这些类如何使用。

API如何使用

从网上下载API文档打开后,点击“显示”,在输入框中输入想找的包,在代码中导包(java.lang下的类不需要)后即可使用包中的函数,具体使用方法api文档中有说明,一般先学习类的构造方法,再学习成员方法。

Scanner类

概述

Scanner类是一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器。

使用步骤

翻阅api文档可以发现如下描述,Scanner类位于java.util包下,需要导包,使用步骤如下:

导包

使用import关键字导包,在类的所有代码之前导包,引入要使用的类型,java.lang包下的所有类无需导入。

//格式
import 包名.类名;
//举例
import java.util.Scanner

创建对象

使用该类的构造方法,创建一个该类的对象。

//格式
DataType variableName = new DataType(param_list);
//举例
Scanner scanner = new Scanner(System.in);

调用方法

使用创建的对象调用方法,完成指定功能。

//格式
variableName.MethodName(param_list);
//举例
int result = scanner.nextInt();

举例

package API;

import java.util.Scanner;

/*
 * Scanner类能实现从键盘输入数据
 * 引用类型的一般使用步骤:
 *   1.导包:import 包路径.包名(同一类下省略不写),只有java.lang包下的内容不需要导包,其他都需要import语句
 *   2.创建:ClassName ObjectName = new ClassName()
 *   3.使用:对象名.成员方法名()
 * */
public class API01Scanner {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        //System.in表示从键盘输入
        int num = sc.nextInt();//获取键盘输入的数字
        String str = sc.next();//从键盘获取输入的自字符串
        System.out.println(num + str);
    }
}

匿名对象

从上述的Scanner类中可以看出,如果我们只需要使用一次该类的对象调用的方法比如只需要从键盘中获取一次int值,那么依照上述方法书写则较为繁琐,于是匿名对象应运而生。

  • 匿名对象就是没有变量名的对象。

//格式
new ClassName(param_list);
//举例
new Scanner(System.in);
  • 匿名对象可以直接调用方法。
//格式
new ClassName(param_list).MethodName();
//举例
new Scanner(System.in).nextInt();
  • 匿名对象可以作为方法的参数和返回值。

举例

注:该person类后面还会用到

package API;

public class Person {
    private String name;
    private int age;

    public Person() {
    }

    public Person(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;
    }
}
package API;

import java.util.Scanner;

/*
 * 标准创建:ClassName ObjectName = new ClassName()
 * 匿名对象只有右边new ClassName()部分,没有赋值符号及左边的部分
 * 注:匿名对象只能使用唯一一次,下次使用再用还需再创建;当确定只有一个对象时,可以使用匿名对象
 * */
public class API02Anonymous {
    public static void main(String[] args) {
        //创建匿名对象
        new Person().setName("susan");
        new Person().setAge(18);

        //使用匿名对象获取键盘输入
        int num = new Scanner(System.in).nextInt();
        System.out.println(num);

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

        //使用匿名对象作为返回值
        Scanner sc = methodReturn();
        int num_ = sc.nextInt();
        System.out.println(num_);
    }

    public static void methodParam(Scanner sc) {
        int num = sc.nextInt();
        System.out.println(num);
    }

    public static Scanner methodReturn() {
        return new Scanner(System.in);
    }
}

Random类

概述

此类的实例用于生成伪随机数流。

使用步骤

查看类

java.util.Random:该类需要 import导入使后使用。

查看构造方法

public Random():创建一个新的随机数生成器。

查看成员方法

public int nextInt(int n):返回一个伪随机数,范围在[0,n)之间的 int 值。

使用举例

  • 如何生成任意指定区间的随机数
  • 使用二分法猜测随机生成的数字
package API;

import java.util.Random;

/*
 * Random类用来生成随机数字
 * 使用步骤:
 *   1.导包:import java.util.Random
 *   2.创建:Random r = new Random()
 *   3.使用:获取随机int数字,范围是int的表示返回,int num = r.nextInt()
 *          获取随机int数字,参数代表范围,左闭右开区间,int num = r.nextInt(n),[0,n)
 *              欲获得[m,n]之间的随机数:[m,n]->[m,n+1)->[0,n+1-m)+m
 * */
public class API03Random {
    public static void main(String[] args) {
        Random r = new Random();
        int num = r.nextInt();
        System.out.println(num);
        num = r.nextInt(20) + 10;
        System.out.println(num);//[10,29]->[10,30)->[0,20)
        num = r.nextInt();
        randomGame(num);
    }

    //使用二分法猜测随机生成的数字
    public static void randomGame(int rnum) {
        int low = Integer.MIN_VALUE;
        int hig = Integer.MAX_VALUE;
        int mid = (low + hig) / 2;
        int i = 0;
        while (true) {
            i++;
            System.out.println("i = " + i + ", low = " + low + ", mid = " + mid + ", hig = " + hig);
            if (rnum > mid) {
                low = mid;
                long temp = (low + hig) / 2;//防止数据溢出
                mid = (int) (temp) + 1;
            } else if (rnum < mid) {
                hig = mid;
                long temp = (low + hig) / 2;
                mid = (int) (temp);
            } else {
                System.out.println("Guess = " + mid + ", Random = " + rnum);
                break;
            }
        }
    }
}

ArrayList类

概述

java.util.ArrayList是大小可变的数组的实现,存储在内的数据称为元素。此类提供一些方法来操作内部存储的元素,ArrayList中可不断添加元素,其大小也自动增长,这解决了数组只能定长的问题。

使用步骤

java.util.ArrayList:该类需要 import导入使后使用。E表示一种指定的数据类型,叫做泛型。使用时替换成需要的数据类型即可。 

//使用格式,构造方法中的泛型可以省略
ArrayList<E> list = new ArrayList<E>();

常用方法

  • public E add(E e):向集合中添加与泛型一致的元素
  • public E get(int index):从集合中获取索引index的元素,返回值是元素
  • public E remove(int index):从集合中删除索引index的元素,返回值是元素
  • public int size():获取集合的长度,返回值为长度
  • ArrayList对象不能存储基本类型,只能存储引用类型的数据,所以需要存储基本数据类型对应的包装类型,基本数据类型与对应的包装类型如下:
    • byte      Byte
    • short     Short
    • int       Integer
    • long      Long
    • float     Float
    • double    Double
    • char      Character
    • boolean   Boolean
    • 从JDK1.5开始,支持自动拆装箱:也就是说不需要手动地将基本数据类型转换为对应的包装类
      • 自动装箱:基本类型->包装类型
      • 自动拆箱:包装类型->基本类型

举例

  • 创建并使用一个ArrayList对象,使用所有常用方法对其操作,遍历该集合
  • 练习1:用集合储存产生在10-20的十个数字,并遍历输出
  • 练习2:添加三个Person对象并遍历,Person类即是匿名对象中提到的Person类
  • 练习3:使用{元素@元素@...}的方式输出练习1的集合
  • 练习4:筛选练习1集合中的偶数元素,并返回
package API;

import java.util.ArrayList;
import java.util.Random;

public class API05ArrayList {
    public static void main(String[] args) {
        /*
         * ArrayList<E>,<E>表示泛型,从JDK1.7开始,右侧<>可以不写内容,E不能是基本数据类型
         * */
        ArrayList<String> strlist = new ArrayList<>();//ArrayList<String> strlist = new ArrayList<String>()
        System.out.println(strlist);//[]
        strlist.add("Susan");
        System.out.println(strlist);//[susan]
        strlist.add("Tom");//[Susan,Tom]
        /*
         * 常用方法:
         *   public E add(E e):向集合中添加与泛型一致的元素
         *   public E get(int index):从集合中获取索引index的元素,返回值是元素
         *   public E remove(int index):从集合中删除索引index的元素,返回值是元素
         *   public int size():获取集合的长度,返回值为长度
         * */
        System.out.println(strlist.add("Jack"));//true
        System.out.println(strlist);//[Susan, Tom, Jack]
        System.out.println(strlist.size());//3
        //遍历
        for (int i = 0; i < strlist.size(); i++) {
            System.out.println(strlist.get(i));
        }
        System.out.println(strlist.remove(0));//Susan
        System.out.println(strlist.get(0));//Tom

        /*
         * 如果希望向集合存储基本数据类型,则使用包装类(位于java.lang下)
         * 基本类型   包装类
         * byte      Byte
         * short     Short
         * int       Integer
         * long      Long
         * float     Float
         * double    Double
         * char      Character
         * boolean   Boolean
         * 从JDK1.5开始,支持自动拆装箱:
         *   自动装箱:基本类型->包装类型
         *   自动拆箱:包装类型->基本类型
         * */
        ArrayList<Integer> list = new ArrayList<>();
        list.add(100);
        list.add(200);
        int num = list.get(1);
        System.out.println(num);
        list.clear();

        //练习:
        //练习1:用集合储存产生在10-20的十个数字,并遍历输出
        Random r = new Random();
        for (int i = 0; i < 10; i++) {
            list.add(r.nextInt(11) + 10);
        }
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }

        //练习2:添加三个Person对象并遍历
        Person[] person = new Person[3];//创建一个对象数组
        person[0] = new Person("Susan", 18);
        person[1] = new Person("Tom", 19);
        person[2] = new Person("Jack", 17);
        ArrayList<Person> personList = new ArrayList<>();
        personList.add(person[0]);
        personList.add(person[1]);
        personList.add(person[2]);
        for (int i = 0; i < personList.size(); i++) {
            System.out.println(personList.get(i).getName() + "   " + personList.get(i).getAge());
        }

        //练习3:使用{元素@元素@...}的方式输出练习1的集合
        printArrayList(list);

        //练习4:筛选练习1集合中的偶数元素,并返回
        ArrayList<Integer> list_;
        list_ = screenArrayList(list);
        System.out.println(list_);
    }

    public static void printArrayList(ArrayList<Integer> list) {
        System.out.print("{");
        for (int i = 0; i < list.size(); i++) {
            if (i != list.size() - 1) {
                System.out.print(list.get(i) + "@");
            } else {
                System.out.println(list.get(i) + "}");
            }
        }
    }

    public static ArrayList<Integer> screenArrayList(ArrayList<Integer> list) {
        ArrayList<Integer> list_ = new ArrayList<>();
        for (int i = 0; i < list.size(); i++) {
            if (list.get(i) % 2 == 0) {
                list_.add(list.get(i));
            }
        }
        return list_;
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值