常用API - Scanner、Random、ArrayList
API
概述
API(Application Programming Interface),应用程序编程接口。
Java API是一本程序员的 字典
,是JDK中提供给我们使用的类的说明文档。
这些类将底层的代码实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可。
所以我们可以通过查询API的方式,来学习Java提供的类,并得知如何使用它们。
离线API文档下载 提取码:uitw
API 使用步骤
- 打开帮助文档。
- 点击显示,找到索引,看到输入框。
- 你要找谁?在输入框里输入,然后回车。
- 看包。java.lang下的类不需要导包,其他需要。
- 看类的解释和说明。
- 学习构造方法。
引用类型使用步骤
- 导包
- 创建对象
- 调用方法
匿名对象
创建对象的标准格式
类名称 对象名 = new 类名称();
匿名对象就是只有右边的对象,没有左边的名字和赋值运算符
new 类名称();
new 类名称().属性;
new 类名称().方法;
匿名对象只能使用唯一的一次!!
- 可以当实参传给方法
- 也可以作为返回值
Scanner类
Scanner类在基础语法发过了,传送门
Random类
概述
此类的实例用于生成伪随机数流。
如果用相同的种子创建两个 Random
实例,则对每个实例进行相同的方法调用序列,它们将生成并返回相同的数字序列。
Random
类实现的算法使用一个 protected
实用工具方法,每次调用它最多可提供 32 个伪随机生成的位。
很多应用程序会发现 Math.random()
方法更易于使用。
构造方法
构造方法 | 说明 |
---|---|
Random() | 创建一个新的随机数生成器。 |
Random(long seed) | 使用单个 long 种子创建一个新的随机数生成器。 |
常用方法
方法摘要 | 描述 |
---|---|
protected int next(int bits) | 生成下一个伪随机数。 |
int nextInt() | 返回下一个伪随机数,它是此随机数生成器的序列中均匀分布的 int 值。 |
int nextInt(int n) | 返回一个伪随机数,它是取自此随机数生成器序列的、在 0(包括)和指定值(不包括)之间均匀分布的 int 值。 |
long nextLong() | 返回下一个伪随机数,它是取自此随机数生成器序列的均匀分布的 long 值。 |
float nextFloat() | 返回下一个伪随机数,它是取自此随机数生成器序列的、在 0.0 和 1.0 之间均匀分布的 float 值。 |
double nextDouble() | 返回下一个伪随机数,它是取自此随机数生成器序列的、在 0.0 和 1.0 之间均匀分布的 double 值。 |
boolean nextBoolean() | 返回下一个伪随机数,它是取自此随机数生成器序列的均匀分布的 boolean 值。 |
void setSeed(long seed) | 使用单个 long 种子设置此随机数生成器的种子。 |
double nextGaussian() | 返回下一个伪随机数,它是取自此随机数生成器序列的、呈高斯(“正态”)分布的 double 值,其平均值是 0.0,标准差是 1.0。 |
void nextBytes(byte[] bytes) | 生成随机字节并将其置于用户提供的 byte 数组中。 |
基本使用
-
导包
import java.util.Random
-
创建对象
Random r = new Random();
-
使用
r.nextInt();
简单使用
package com;
import java.util.Random;
import java.util.Scanner;
public class RandomTest {
public static void main(String[] args) {
// base();
// bound();
// exercise1();
exercise2();
}
public static void base() {
Random r = new Random();
int i = r.nextInt();
// 不带参数将产生整数范围内的随机数 (正负21亿多)
System.out.println(i);
}
public static void bound() {
Random r = new Random();
int i = r.nextInt(10);
// 带参数将产生[0,10) 即0~9的随机数
System.out.println(i);
}
public static void exercise1() {
// 生成1-n 的随机数
Random r = new Random();
// 0~9的随机数整体+1 就成了1~10
int i = r.nextInt(10) + 1;
System.out.println(i);
}
public static void exercise2() {
// 猜大小
Scanner sc = new Scanner(System.in);
Random r = new Random();
// 范围0-100
int target = r.nextInt(101);
int num = -1;
// System.out.println("答案"+target);
do {
System.out.print("请输入一个数:");
num = sc.nextInt();
if (num > target) {
System.out.println("太大了");
} else if (num < target) {
System.out.println("太小了");
} else {
System.out.println("猜对了!");
}
} while (num != target);
}
}
ArrayList类
之前学习数组时,发现一个缺点!
数组一旦创建,就无法改变数组的长度。
概述
java.util.ArrayList
是大小可变的数组的实现
对于ArrayList来说,有一个尖括号
注意:泛型只能是引用类型,不能是基本类型
构造方法
构造方法 | 说明 |
---|---|
ArrayList() | 构造一个初始容量为 10 的空列表。 |
ArrayList(Collection <? extends E> c) | 构造一个包含指定 collection 的元素的列表, 这些元素是按照该 collection 的迭代器返回它们的顺序排列的。 |
ArrayList(int initialCapacity) | 构造一个具有指定初始容量的空列表 |
常用方法
方法摘要 | 描述 |
---|---|
int size() | 返回此列表中的元素数。 |
boolean add(E e) | 将指定的元素添加到此列表的尾部 |
void add(int index, E element) | 将指定的元素插入此列表中的指定位置 |
E remove(int index) | 移除此列表中指定位置上的元素。 |
boolean remove(Object o) | 移除此列表中首次出现的指定元素(如果存在)。 |
void clear() | 移除此列表中的所有元素。 |
E get(int index) | 返回此列表中指定位置上的元素。 |
boolean contains(Object o) | 如果此列表中包含指定的元素,则返回 true。 |
int indexOf(Object o) | 返回此列表中首次出现的指定元素的索引,或如果此列表不包含元素,则返回 -1。 |
int lastIndexOf(Object o) | 返回此列表中最后一次出现的指定元素的索引,或如果此列表不包含索引,则返回 -1 |
Object clone() | 返回此 ArrayList 实例的浅表副本。 |
boolean isEmpty() | 如果此列表中没有元素,则返回 true |
boolean addAll(Collection<? extends E> c) | 按照指定 collection 的迭代器所返回的元素顺序,将该 collection 中的所有元素添加到此列表的尾部。 |
boolean addAll(int index, Collection<? extends E> c) | 从指定的位置开始,将指定 collection 中的所有元素插入到此列表中。 |
void ensureCapacity(int minCapacity) | 如有必要,增加此 ArrayList 实例的容量,以确保它至少能够容纳最小容量参数所指定的元素数。 |
protected void removeRange(int fromIndex, int toIndex) | 移除列表中索引在 fromIndex(包括)和 toIndex(不包括)之间的所有元素。 |
E set(int index, E element) | 用指定的元素替代此列表中指定位置上的元素。 |
Object[] toArray() | 按适当顺序(从第一个到最后一个元素)返回包含此列表中所有元素的数组。 |
<T> T[] toArray(T[] a) |
按适当顺序(从第一个到最后一个元素)返回包含此列表中所有元素的数组;返回数组的运行时类型是指定数组的运行时类型。 |
void trimToSize() | 将此 ArrayList 实例的容量调整为列表的当前大小 |
注意事项
- 养成面向接口编程的思维,ArrayList是List的实现类,即可以写成
List list = new ArrayList();
父类引用指向子类对象,便于后期维护。可参考面向对象知识的多态
-
如果使用
<E>
泛型,不能指定八大基本数据类型,而是指定它们对应的封装类基本类型 封装类 int Integer char Character byte Byte short Short long Long float Float double Double boolean Boolean
练习
-
生成6个1-33的随机数,添加到集合,并遍历集合
package com; import java.util.ArrayList; import java.util.List; import java.util.Random; public class ArrayListExercise { public static void main(String[] args) { exercise1(); } public static void exercise1() { List<Integer> list = new ArrayList<>(); Random r = new Random(); final int N = 6; for (int i = 0; i < N; i++) { int num = r.nextInt(33) + 1; list.add(num); } for (int i = 0; i < list.size(); i++) { System.out.print(list.get(i) + "\t"); } System.out.println(); for (Integer i : list) { System.out.print(i + "\t"); } } }
-
自定义4个学生对象,添加到集合,并遍历集合
package com; public class Person { private String name; private int 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 Person() { } public Person(String name, int age) { this.name = name; this.age = age; } }
package com; import java.util.ArrayList; import java.util.List; import java.util.Random; public class ArrayListExercise { public static void main(String[] args) { exercise2(); } public static void exercise2() { List<Person> list = new ArrayList<>(); list.add(new Person("小明", 5)); list.add(new Person("小红", 6)); list.add(new Person("小王", 7)); list.add(new Person("小丽", 8)); for (Person person : list) { System.out.println("名字:"+person.getName() + " 年龄:"+person.getAge()); } } }
-
自定义格式打印集合的方法,传参ArrayList,打印:
package com; import java.util.ArrayList; import java.util.List; import java.util.Random; public class ArrayListExercise { public static void main(String[] args) { exercise3(); } public static void exercise3() { List<String> list = new ArrayList<>(); list.add("张三"); list.add("李四"); list.add("王五"); display((ArrayList) list); } public static void display(ArrayList list) { for (int i = 0; i < list.size(); i++) { if (i == 0) { System.out.print("{"+list.get(i)+"@"); } else if (i == list.size()-1) { System.out.print(list.get(i) + "}"); } else { System.out.print(list.get(i) + "@"); } } } }
-
用一个大集合存入20个随机数,然后筛选其中的偶数元素,存入小集合中,要求自定义方法筛选。
package com; import java.util.ArrayList; import java.util.List; import java.util.Random; public class ArrayListExercise { public static void main(String[] args) { exercise4(); } public static void exercise4() { List<Integer> list = new ArrayList<>(); Random r = new Random(); final int N = 20; for (int i = 0; i < N; i++) { int num = r.nextInt(100) + 1; list.add(num); } for (Integer i : list) { System.out.print(i + "\t"); } List<Integer> small = filter(list); System.out.println(); for (Integer i : small) { System.out.print(i + "\t"); } } public static List<Integer> filter(List<Integer> list) { List<Integer> result = new ArrayList<>(); for (int i = 0; i < list.size(); i++) { if (list.get(i) % 2 == 0) { result.add(list.get(i)); } } return result; } }