上一篇博客:封装
目录
- API概述
- Scanner类
- Random类
- ArrayList类
开始
一、API概述
API(Application Programming Interface),应用程序编程接口
Java API是一本程序员的字典,是JDK供给我们使用的类的说明文档。
这些类将底层的代码封装起来,我们不需要关心这些类是如何实现的,只要知道如何使用就行
查找使用方法
- 搜索
- 看包(Java.lang下的类不需要的包,其他的需要)
- 看类的解释说明
- 学习构造方法
- 使用成员的方法
二、Scanner类
- 什么是Scanner类
一个可以解析基本类型和字符串的简单文本扫描器
例如类似C中的scanf
函数,System.in
从键盘读入一个字符串
Scanner sc = new Scanner(System.in);
//备注:System.in 系统输入指的是通过键盘录入数据。
int i = sc.nextInt();
- 引用类型使用步骤
- 导包
- 创建对象
- 调用方法
import 包名.类名;
如 import java.util.Scanner;
数据类型 变量名 = new 数据类型(参数列表);
如 Scanner sc = new Scanner(System.in);
变量名.方法名();
如 int i = sc.nextInt();
- Scanner使用步骤
package DemoArrayList;
import java.util.Scanner;
public class Demo01_Scanner {
public static void main(String[] args) {
//创建键盘录入数据的对象
Scanner sc= new Scanner(System.in);
//接收数据
System.out.println("请输入一个数:");
int num = sc.nextInt();
//输出数据
System.out.println("输入的数"+num);
}
}
- 练习
- 求和
- 取最值
package DemoArrayList;
import java.util.Scanner;
public class Demo02_Scanner {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("输入第一个数字:");
int num1 = sc.nextInt();
System.out.println("输入第二个数字:");
int num2 = sc.nextInt();
int sum = num1 + num2;
System.out.println("和为:"+ sum);
}
}
package DemoArrayList;
import java.util.Scanner;
public class Demo03_Scanner {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个数据:");
int num1 = sc.nextInt();
System.out.println("请输入第二个数据:");
int num2 = sc.nextInt();
System.out.println("请输入第三个数据:");
int num3 = sc.nextInt();
int temp = num1>num2? num1:num2;
int max = temp>num3? temp:num3;
System.out.println("三个数最大值:"+ max);
}
}
- 匿名对象
- 概念:
创建对象时,只有创建对象的语句,没有把对象的地址值赋值给某个变量,只有new Student();
- 应用场景:
创建匿名对象直接调用方法,一个匿名对象,只能使用一次。new Scanner(System.in).nextInt();
匿名对象可以直接作为方法的参数和返回值
- 作为参数
package DemoArrayList;
import java.util.Scanner;
public class Demo04_AnonymousObject {
public static void main(String[] args) {
//普通方式
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个数字:");
sc.nextInt();
//匿名对象作为方法接受的参数
input(new Scanner(System.in));
}
public static void input(Scanner sc){
System.out.println(sc);
}
}
- 作为返回值
package DemoArrayList;
import java.util.Scanner;
public class Demo05_ReturnObject {
public static void main(String[] args) {
Scanner sc = getScanner();
System.out.println(sc);
//调用方法,返回地址,sc类型为对象
}
public static Scanner getScanner(){
//普通方法
// Scanner sc = new Scanner(System.in);
//
// return sc;
//匿名对象方法
return new Scanner(System.in);
}
}
三、Random类
- 什么是Random类
此类的实例用于生成伪随机数
java Random r = new Random();
int i = r.nextInt()
- 使用步骤
- 查看类—》
java.util.Random
:该类需要 import导入使后使用 - 查看构造方法—》
public Random()
:创建一个新的随机数生成器。 - 查看成员方法—》
public int nextInt(int n)
:返回一个伪随机数,范围在 0 (包括)和 指定值 n (不包括)之间的 int 值。
package DemoArrayList;
import java.util.Random;
public class Demo06_Random {
public static void main(String[] args) {
Random r = new Random();
for (int i = 0; i < 3; i++) {
int num = r.nextInt(10);
//产生0-9之间的整数
System.out.println(num);
}
}
}
- 练习
- 获取1~n的三个随机数,包含n
package DemoArrayList;
import java.util.Random;
public class Demo06_Random {
public static void main(String[] args) {
int n =50;
Random r = new Random();
for (int i = 0; i < 3; i++) {
int num = r.nextInt(n)+1;
//产生0-9之间的整数
System.out.println(num);
}
}
}
- 猜数字小游戏
package DemoArrayList;
/*
游戏开始时,会随机生成一个1-100之间的整数 number 。
玩家猜测一个数字 guessNumber ,会与 number 作比 较,
系统提示大了或者小了,直到玩家猜中,游戏结束。
*/
import java.util.Random;
import java.util.Scanner;
public class Demo07_GuessNumGame {
public static void main(String[] args) {
Random r = new Random();
int num = r.nextInt(100)+1;
while(true){
Scanner sc = new Scanner(System.in);
System.out.println("请输入你猜的数字:");
int guess = sc.nextInt();
if(guess > num){
System.out.println("太大了~");
}
else if(guess < num){
System.out.println("太小了~");
}else{
System.out.println("猜对了(^U^)ノ~YO");
break;
}
}
System.out.println("游戏结束~");
}
}
四、ArrayList类
- 引入
使用学生数组,存储三个学生对象,代码:
package DemoArrayList;
public class Student {
private String name;
private int age;
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
package DemoArrayList;
public class Demo07_StuArrayLIst {
public static void main(String[] args) {
Student[] stus = new Student[3];
Student stu1 = new Student("曹操", 40);
Student stu2 = new Student("刘备", 50);
Student stu3 = new Student("孙权", 60);
stus[0] = stu1;
stus[1] = stu2;
stus[2] = stu3;
for (int i = 0; i < stus.length; i++) {
Student s = stus[i];
System.out.println(s.getName() + "-----" + s.getAge());
}
}
}
目前为止,我们想要存储对象数据,选择容器只有对象数组
但是,数组的长度又是固定不能改变的
所以,Java提供了一个容器java.util.AyyarList
集合类,可以更便捷的存储操作对象数据
- ArrrayList类
java.util.ArrayList是大小可变的数组的实现,存储在内的数据称为元素
此类提供了一些方法来操作内部存储的元素
ArrayList中可不断添加元素,其大小也自动增长
- 使用ArrayLiat
- 导包:
import java.util.ArrayList;
- 构造集合:
ArrayList<...> list = new ArrayList<>();
- 添加对应元素:
list.add(...);
package DemoArrayList;
import java.util.ArrayList;
public class Demo08_ArrayListOne {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
String s1 = "迪丽热巴";
String s2 = "古力娜扎";
String s3 = "马尔扎哈";
//刚开始创建的是一个空集合
System.out.println(list);
//添加元素
list.add(s1);
list.add(s2);
list.add(s3);
System.out.println(list);
}
}
- 常用方法和遍历
对于元素的基本操作-----》增、删、查
public boolean add(E e)
:将指定的元素添加到此集合的尾部。
public E remove(int index)
:移除此集合中指定位置上的元素。返回被删除的元素。
public Eget(int index)
:返回此集合中指定位置上的元素。返回获取的元素。
public int size()
:返回此集合中的元素数。遍历集合时,可以控制索引范围,防止越界。
package DemoArrayList;
import java.util.ArrayList;
public class Demo09_ArrayListTwo {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("Python");
list.add("Java");
list.add("C++");
//返回指定索引的元素
System.out.println("get:" + list.get(0));
System.out.println("get:" + list.get(1));
System.out.println("get:" + list.get(2));
//返回集合中元素的个数
System.out.println("size:" + list.size());
//删除指定元素
System.out.println("remove:" + list.remove(0));
//遍历输出
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
}
- 如何存储基本数据
前面存储的是引用类型的String
字符串
那么8种基本类型的数据怎么构造对应的集合?需要进行包装
ArrayList对象不能存储基本类型,只能存储引用类型的数据。类似 <int>
不能写,但是存储基本数据类型对应的, 包装类型是可以的。所以,想要存储基本类型数据, <>
中的数据类型,必须转换后才能编写,转换写法如下:
- 练习
- 数值添加到集合
生成6个1~33之间的随机整数,添加到集合,并遍历出来
package DemoArrayList;
import java.util.ArrayList;
import java.util.Random;
public class Demo11_ArrayLIstFour {
public static void main(String[] args) {
Random r = new Random();
ArrayList<Integer> list = new ArrayList<>();
for (int i = 0; i <6 ; i++) {
int rnum = r.nextInt(33)+1;
list.add(rnum);
}
System.out.println(list);
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
}
- 对象添加到集合
自定义4个学生对象,添加到集合,并遍历
package DemoArrayList;
import java.util.ArrayList;
public class Demo12_ArrayLIstFive {
public static void main(String[] args) {
ArrayList<Student> list = new ArrayList<>();
Student s1 = new Student("古力娜扎",18);
Student s2 = new Student("迪丽热巴",19);
Student s3 = new Student("马尔扎哈",20);
Student s4 = new Student("团听耐听",21);
list.add(s1);
list.add(s2);
list.add(s3);
list.add(s4);
for (int i = 0; i < list.size(); i++) {
Student s = list.get(i);
System.out.println(s.getName()+"-------"+s.getAge());
}
}
}
- 打印集合方法
定义以指定格式打印集合的方法(ArrayList类型作为参数),使用{}扩起集合,使用@分隔每个元素。格式参照 {元素 @元素@元素}。
package DemoArrayList;
import java.util.ArrayList;
public class Demo13_ArrayListSix {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("团");
list.add("听");
list.add("耐");
list.add("听");
printArrayList(list);
}
public static void printArrayList(ArrayList<String> list){
System.out.print("{");
for (int i = 0; i <list.size() ; i++) {
String s = list.get(i);
if(i != list.size() - 1){
System.out.print(s + "@");
}else{
System.out.println(s+ "}");
}
}
}
}
- 获取集合方法
定义获取所有偶数元素集合的方法(ArrayList类型作为返回值)
package DemoArrayList;
import java.util.ArrayList;
import java.util.Random;
public class Demo14_ArrayListSeven {
public static void main(String[] args) {
Random r = new Random();
ArrayList<Integer> list = new ArrayList<>();
for (int i = 0; i <20 ; i++) {
int rnum = r.nextInt(100);
list.add(rnum);
}
System.out.println(list);
ArrayList<Integer> arrayList = getArrayList(list);
System.out.println(arrayList);
}
public static ArrayList<Integer> getArrayList(ArrayList<Integer> list){
ArrayList<Integer> smallList = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
Integer num = list.get(i);
if(num % 2 == 0){
smallList.add(num);
}
}
return smallList;
}
}
参照:B站黑马