20200320
1、现在是晚上8点,听着王嘉尔的新歌100 Ways(吹爆!),突然看到CSDN弹窗通知JavaStudy06博客被点赞了还被关注了,第一位粉丝耶,谢谢你!,开心O(∩_∩)O~~(一个被被鼓励就干劲十足的人hhh)那今晚还早,再听一遍歌我再学会!
2、晚上xp哥也来关心了我的学习情况,加油哦!(你不是一个人在战斗!)
20200321
1、看了B站关于GitHub优秀项目的介绍,想学的又多了,时候未到,忍住,专注当前学习任务!
2、今天浪了浪了,休闲时间多于学习时间,明天0708完成!
20200322
1、突然想清楚了要找大公司or小公司:去大公司,哪怕是实习工资低。很多问题无法一时就做决定,积累得多了做着做着就有了答案。就像现在我还不知道想去哪个城市的哪家公司,了解得越多答案会越清晰。
JavaStudy07 Scanner类、Random类、ArrayList 类
今日内容和教学目标
第1章 API
概述
应用程序接口
API使用步骤
1、 索引搜要学习的类
2、看包。java.lang下的类不需要导包,其他需要。
3、看类的解释和说明。
4、 学习构造方法。
第2章 Scanner类
2.1 什么是Scanner类
实现键盘输入数据到程序中,一个可以解析基本类型和字符串的简单文本扫描器。备注System.in 系统输入指的是通过键盘录入数据。
2.2 引用类型使用步骤
导包
格式:
import.包路径.类名称 ;
不需写导包语句:如果调用类与此类同包或者属于java.lang包,
其他都要写导包语句。
举例:
import java.util.Scanner;
创建对象
格式:
数据类型 变量名 = new 数据类型(参数列表);
举例:
Scanner sc = new Scanner(System.in);
调用方法
格式:
变量名.成员方法名称
举例:
int num = sc.nextInt();
2.3 Scanner使用步骤
查看类
看属于哪个包
查看构造方法
看对应参数
查看成员方法
看点啥
举例:
2.4 练习
求和
package demo01;
//求输入两数之和
import java.util.Scanner;
public class Test01ScannerSum {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入两个数");
int a = sc.nextInt();
int b = sc.nextInt();
System.out.println("两个数的和为:"+(a+b));
}
}
取最值
package demo01;
//输入三个数,输出最大值
import java.util.Scanner;
public class Test02ScannerMax {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入三个数");
int a = sc.nextInt();
int b = sc.nextInt();
int c = sc.nextInt();
int[] num = {a, b, c};
int Max = num[0];//先给Max赋初值才能比较
for (int i = 1; i < num.length; i++) {
Max = (num[i]>Max?num[i]:Max);
}
System.out.println("这三个数的最大值是:"+ Max);
}
}
2.5 匿名对象【了解】
概念
匿名对象 :没有变量名的对象,只能使用一次
格式:
new 类名(参数列表);
// Scanner sc = new Scanner(System.in); 等于new Scanner(System.in);
//Scanner sc = new Scanner(System.in); int num = sc.nextInt();等于 int num =new Scanner(System.in).nextInt();
应用场景
- 创建匿名对象直接调用方法,没有变量名。
- 一个匿名对象,只能使用一次。
- 匿名对象可以作为方法的参数和返回值
匿名对象可以作为方法的参数和返回值
package demo01;
//普通写法和匿名类传达返回比较
//任何数据类型都可以传参返回值
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();
//
// //普通传参
// Scanner sc = new Scanner(System.in)
// methodParam(sc);
//
// //匿名传参
// 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(){
// //普通返回
// Scanner sc = new Scanner(System.in);
// return (sc);
//匿名返回
return (new Scanner(System.in));
}
}
第3章 Random类
3.1 什么是Random类
例用于生成伪随机数。
以下代码使用户能够得到一个随机数:
Random r = new Random();
int i = r.nextInt();
3.2 Random使用步骤
3.3 练习
获取随机数
获取1-n之间的随机数
package demo01;
//题目:获取1-n的随机数
/*思路:
1、定义int变量n,随意赋值
2、使用Random,导包、创建、使用
3、如果写9是[0,9),要想1~10,整体加1即可
4、打印随机数字
*/
import java.util.Random;
public class Test03Random {
public static void main(String[] args) {
int n = 5;
Random r = new Random();
int result = r.nextInt(n)+1;
System.out.println(result);
}
}
猜数字小游戏
游戏开始时,会随机生成一个1-100之间的整数 number 。玩家猜测一个数字 guessNumber ,会与 number 作比较,系统提示大了或者小了,直到玩家猜中,游戏结束。
package demo01;
/*游戏开始时,会随机生成一个1-100之间的整数 number 。
玩家猜测一个数字 guessNumber ,会与 number 作比较,系统提示大了或者小了,直到玩家猜中,游戏结束。*/
/*思路:
* 1、int number
* 2、使用Random类
* 3、r.nextInt(100)+1
* 4、int gussNumber
* 5、使用Scanner类 二分法猜测快
* 6、比较大小输出提示 循环次数确定用for直到相等 循环次数不确定 用while(true)break;
*/
import java.util.Random;
import java.util.Scanner;
public class Test04RandomGuess {
public static void main(String[] args) {
Random r = new Random();
int number = r.nextInt(100) + 1;
while(true){
System.out.println("请猜测一个数字");
Scanner sc = new Scanner(System.in);
int guessNumber = sc.nextInt();
if (number > guessNumber) {
System.out.println("猜小了");
} else if (number < guessNumber) {
System.out.println("猜大了");
} else {
System.out.println("猜对了!");
break;
}
}
System.out.println("游戏结束!");
}
}
第4章 ArrayList类
4.1 引入——对象数组
使用学生数组,存储三个学生对象
package demo02;
//题目:定义一个数组,用来存储3个Student类
/*思路:
1、定义成员变量
2、定义无参有参构造方法
3、Setter、Getter方法
*/
//定义学生类
public class Student {
private String name;
private int age;
public Student() {
}
public Student(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 demo02;
//题目:定义一个数组,用来存储3个Student类
/*思路:
1、创建长度为3的数组
2、创建对象
3、对象赋值给数组
4、打印数组
4.1打印数组地址
4.2打印数组内容
*/
/*注意事项:
数组的缺点:得先明确长度,一旦创建,运行期间长度不可改变
ArrayList集合可以解决这个缺点
*/
public class Demo01Array {
public static void main(String[] args) {
//1、创建数组
Student[] array = new Student[3];
//2、创建对象
Student one = new Student("张三",12);
Student two = new Student("李四",16);
Student three = new Student("王五",20);
//3、对象赋值给数组
array[0] = one;
array[1] = two;
array[2] = three;
//4、打印数组
//4.1打印数组地址
System.out.println(array[0]);//地址值
System.out.println(array[1]);//地址值
System.out.println(array[2]);//地址值
//4.2打印数组内容
System.out.println(array[0].getName());//张三
System.out.println(array[0].getAge());//12
//4.3遍历数组内容
for (int i = 0; i < array.length; i++) {
System.out.println(array[i].getName()+"-------"+array[i].getAge());
}
}
}
4.2 什么是ArrayList类
是长度可变的数组。
ArrayList代表泛型,泛型:装在集合中的元素统一类型。
注意:泛型只能是引用类型,不能是基本类型
注意:ArrayList集合直接打印得到的不是地址值而是内容。如果内容为空,得到的是空括号:[]
4.3 ArrayList使用步骤
查看类
查看构造方法
查看成员方法
举例
package demo02;
//题目:用ArrayList存3个对象
/*思路:
1、使用ArrayList类创建对象
2、调用add方法存3个对象
3、打印集合
*/
import java.util.ArrayList;
public class Demo02ArrayList {
public static void main(String[] args) {
//1、使用ArrayList类创建对象
ArrayList<String> list = new ArrayList<>();
System.out.println(list);
//2、调用add方法存3个对象
list.add("小猫");
list.add("小狗");
list.add("小狮子");
//3、打印集合
System.out.println(list);
}
}
4.4 常用方法和遍历
对于元素的操作,基本体现在——增、删、查。
常用方法
常用的方法有:
- public boolean add(E e) :将指定的元素添加到此集合的尾部。
- public E remove(int index) :移除此集合中指定位置上的元素。返回被删除的元素
- public E get(int index) :返回此集合中指定位置上的元素。返回获取的元素。
- public int size() :返回此集合中的元素数。返回长度,遍历集合时,可以控制索引范围,防止越界。
举例
package demo02;
//常用方法
/*1、增 add()
2、查元素 get()
3、删 remove()
4、查长度 size()
5、遍历方法,以get()为例
*/
import java.util.ArrayList;
public class Demo03ArrayList {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
//1、方法
//1.1、增
list.add("苹果");
list.add("草莓");
list.add("山竹");
list.add("哈密瓜");
list.add("芒果");
list.add("无");
System.out.println(list);
//1.2、查元素
String name = list.get(0);
System.out.println("0号索引位置的水果是:"+name);
//1.3、删
String whoRemove = list.remove(5);
System.out.println("删除5号索引位置的水果是:"+ whoRemove);
System.out.println(list);
//1.4、查长度
System.out.println("集合长度是"+list.size());
System.out.println("=====");
//2、遍历方法
for(int i=0;i<list.size();i++){
System.out.println(list.get(i));
}
}
}
#bug 索引越界
4.5 如何存储基本数据类型
ArrayList只能存储引用数据类型,不可存储基本数据类型,但可其包装类,从JDK1.5开始,支持自动装箱(包装)、自动拆箱(原类型)。
8种基本类型包装类:除了int→Integer,char→Character2个特殊,其他都是首字母改成大写即可。
4.6 ArrayList练习
数值添加到集合
生成6个1~33之间的随机整数,添加到集合,并遍历
package demo02;
import java.util.ArrayList;
import java.util.Random;
//生成6个1~33之间的随机整数,添加到集合,并遍历
/*思路:
1、使用Random类生成6个整数
2、赋值给ArrayList类
3、遍历打印*/
public class Test01RandomArrayList {
public static void main(String[] args) {
Random r = new Random();
ArrayList<Integer> list = new ArrayList<>();
for (int i = 0; i < 6; i++) {
int num = r.nextInt(33)+1;
list.add(num);
}
System.out.println(list);
}
}
对象添加到集合
自定义4个学生对象,添加到集合,并遍历
#bug
//定义类
package demo02;
//题目:定义一个数组,用来存储3个Student类
/*思路:
1、定义成员变量
2、定义无参有参构造方法
3、Setter、Getter方法
*/
public class Student {
private String name;
private int age;
public Student() {
}
public Student(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 demo02;
import java.util.ArrayList;
//自定义4个学生对象,添加到集合,并遍历
/*思路:
4个学生对象
1、创建Student类
3、new 4个对象
添加到集合
2、 创建ArrayList类,
add()
遍历
5、list.fori,get(i)
*/
public class Test02StudentArrayList {
public static void main(String[] args) {
//(1、创建Student类)2、 创建ArrayList类,add()
ArrayList<Student> list = new ArrayList<>();
//3 new 4个对象
Student a = new Student("小王",24);
Student b = new Student("小方",23);
Student c = new Student("小李",20);
Student d = new Student("小欣",27);
//4 add()
list.add(a) ;
list.add(b) ;
list.add(c) ;
list.add(d) ;
//5、list.fori,get(i)
for (int i = 0; i < list.size(); i++) {
Student who = list.get(i);
System.out.println(who.getName()+who.getAge());
}
}
}
打印集合方法
定义以指定格式打印集合的方法(ArrayList类型作为参数),使用{}扩起集合,使用@分隔每个元素。格式参照 {元素@元素@元素}。
package demo02;
import java.util.ArrayList;
//定义以指定格式打印集合的方法(ArrayList类型作为参数),使用{}扩起集合,使用@分隔每个元素。
// 格式参照 {元素@元素@元素}。
/*思路:
1、创建ArrayList类
2、打印{
3、add
4、get(i)
5、打印@
6、循环判断<size 45, =size 4
7、打印}*/
public class Text03FormatArrayList {
public static void main(String[] args) {
//创建ArrayList类
ArrayList<Integer> list = new ArrayList<>();
//打印{
System.out.print("{");
//add(i)
list.add(1);
list.add(4);
list.add(7);
//循环判断<size 45, =size 4
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) + "}");
}
}
System.out.println("=======");
//调用方法
printArrayList(list);
}
//定义方法 三要素 返回值 方法名 参数
public static void printArrayList(ArrayList<Integer> list) {
//{1@2@3}
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.print(list.get(i) + "}");
}
}
}
}
获取集合方法
定义获取所有偶数元素集合的方法(ArrayList类型作为返回值)
#注意 学习思路
package demo02;
import java.util.ArrayList;
import java.util.Random;
/*获取偶数数组
思路:
1、需要创建一个大集合,存int数字,<Integer>
2、随机数字用Random nextInt()
3、循环30次把数字放进大集合:for add
4、定义一个方法筛选偶数
根据大集合筛选符合要求的元素的到小集合
三要素:
返回值类型:集合
方法名称:getEvenList
参数列表:ArrayList大集合
5、判断(if)是偶数:num%2==0
6、如果是偶数就放到小集合,否则不放
7、主方法给小集合赋值
8、遍历打印偶数对象
*/
public class Test04ReturnArrayList {
public static void main(String[] args) {
//创建大集合
ArrayList<Integer> allList = new ArrayList<>();
//创建0~100内的30个随机数放入大集合
Random r = new Random();
for (int i = 0; i < 30; i++) {
//生成100以内的随机数
int num = r.nextInt(100)+1;
allList.add(num);
}
//调用方法创建偶数对象
ArrayList<Integer> evenList = getEvenList(allList);
//打印长度
System.out.println("偶数个数为:"+evenList.size());
//遍历打印数值
for (int i = 0; i < evenList.size(); i++) {
System.out.println(evenList.get(i));
}
}
public static ArrayList<Integer> getEvenList(ArrayList<Integer> allList){
//装偶数集合 判断大集合长度次拿偶数
ArrayList<Integer> evenList = new ArrayList<>();
for (int i = 0; i < allList.size(); i++) {
int num = allList.get(i);
if(num%2==0){
evenList.add(num);
}
}
return evenList;
}
}
#bug 理解题意用Random 缺少返回语句 错误方法代码如下:
package demo02;
import java.util.ArrayList;
//定义获取所有偶数元素集合的方法(ArrayList类型作为返回值)
/*思路:
1、创建AL类
2、add
3、定义取偶方法
4、返回偶数*/
public class Test04ReturnArrayList {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
list.add(1);
list.add(3);
list.add(4);
list.add(7);
list.add(6);
returnAL(list);
System.out.println(list);
}
public static int returnAL(ArrayList<Integer> list){
for (int i = 0; i < list.size(); i++) {
if(list.get(i)/2==0){
return list.get(i);
}
}
}
}