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
基本数据类型 |