JavaSE 第 09 天 —— ArrayList、学生管理系统

能力目标

  1. 能说出集合和数组的区别:
  2. 能使用集合对数据进行增删改查:
  3. 能看懂学生管理系统执行流程:

1. ArrayList

☆1.1 集合同数组的区别对比(理解)

视频时长 / 10’38’’

1.1.1 「集合同数组的区别对比」问题

  1. 集合和数组有和区别?

1.1.2 「集合同数组的区别对比」答案

  1. 集合和数组有和区别?

    • 数组:长度不可变,可以存基本类型或引用类型的数据。
    • 集合:长度可变,只能存引用数据类型数据。


☆1.2 ArrayList的构造方法和添加方法(掌握)

视频时长 / 11’15’’

1.2.1 「ArrayList的构造方法和添加方法」问题

  1. ArrayList集合后面的这个代表什么意思?

1.2.2 「ArrayList的构造方法和添加方法」答案

  1. ArrayList集合后面的这个代表什么意思?

    • :泛型。代表该ArrayList集合对象中只能存储String类型的数据。
    • 用于约束集合中存储元素的数据类型。

1.2.3 「ArrayList的构造方法和添加方法」课堂练习

练习时长:6分钟。

需求:创建集合对象,泛型使用,并任意添加5个数据到集合中,最后在控制台输出集合。

public static void main(String[] args){//创建集合ArrayList<String> array = new ArrayList<String>();//添加元素array.add("hello");array.add("world");array.add("java");array.add("IOS");array.add("PHP");System.out.println(array);
}

☆1.3 ArrayList常用方法(掌握)

视频时长 / 10’15’’

1.2.1 「ArrayList的构造方法和添加方法」课堂练习

练习时长:10分钟。

需求:练习视频中讲解的方法。

public static void main(String[] args) {//创建集合ArrayList<String> array = new ArrayList<String>();//添加元素array.add("hello");array.add("world");array.add("java");//public boolean remove(Object o):删除指定的元素,返回删除是否成功System.out.println(array.remove("world"));System.out.println(array.remove("javaee"));//public E remove(int index):删除指定索引处的元素,返回被删除的元素System.out.println(array.remove(1));//IndexOutOfBoundsExceptionSystem.out.println(array.remove(3));//public E set(int index,E element):修改指定索引处的元素,返回被修改的元素System.out.println(array.set(1,"javaee"));//IndexOutOfBoundsExceptionSystem.out.println(array.set(3,"javaee"));//public E get(int index):返回指定索引处的元素System.out.println(array.get(0));System.out.println(array.get(1));                              System.out.println(array.get(2));//System.out.println(array.get(3)); //?????? 自己测试//public int size():返回集合中的元素的个数System.out.println(array.size());//输出集合System.out.println("array:" + array);}

☆1.4 集合存储字符串并遍历(操作)

视频时长 / 04’27’’

1.4.1 「集合存储字符串并遍历」课堂练习

练习时长:5分钟。

需求:创建集合对象,将任意字符串添加到集合中,并遍历集合输出字符串。

public static void main(String[] args){//创建集合ArrayList<String> array = new ArrayList<String>();//添加元素array.add("hello");array.add("world");array.add("java");array.add("IOS");array.add("PHP");//遍历集合for(int i = 0;i < array.size();i++){String s = array.get(i);System.out.println(s);}
}

☆1.5 集合存储学生对象并遍历(操作)

视频时长 / 03’40’’

1.5.1 「集合存储学生对象并遍历」问题

  1. 集合存储学生对象时,集合中保存的是什么?

1.5.2 「集合存储学生对象并遍历」答案

  1. 集合存储学生对象时,集合中保存的是什么?

    • 集合中保存的是学生对象的地址值。

1.5.3 「集合存储学生对象并遍历」课堂练习

练习时长:8分钟。

需求:定义学生类,在定义测试类,在测试类中创建集合对象,再创建3个学生对象,添加到集合中,并遍历集合输出学生对象中的属性值。

// 学生类定义,此处省略,大家自行完成...public static void main(String[] args) {//创建集合对象ArrayList<String> array = new ArrayList<String>();//往集合中添加字符串对象//创建学生对象Student s1 = new Student("林青霞", 30);Student s2 = new Student("风清扬", 33);Student s3 = new Student("张曼玉", 18);//添加学生对象到集合中array.add(s1);array.add(s2);array.add(s3);//遍历集合的通用格式for(int i=0; i<array.size(); i++) {String s = array.get(i);System.out.println(s);}
}

☆1.6 键盘录入学生信息到集合(操作)

视频时长 / 05’48’’

1.6.1 「键盘录入学生信息到集合」课堂练习

练习时长:10分钟。

需求:定义一个方法,方法中完成键盘录入学生对象的功能,在main方法中调用该方法,获取学生对象,再将学生对象存入集合中并遍历。

 public static void main(String[] args) {//创建集合对象ArrayList<Student> array = new ArrayList<Student>();//为了提高代码的复用性,我们用方法来改进程序Student s = addStudent();Student s2 = addStudent();Student s3 = addStudent();// 将学生对象添加到集合中array.add(s);array.add(s2);array.add(s3);//遍历集合,采用通用遍历格式实现for (int i = 0; i < array.size(); i++) {Student s = array.get(i);System.out.println(s.getName() + "," + s.getAge());}}public static Student addStudent() {//键盘录入学生对象所需要的数据Scanner sc = new Scanner(System.in);System.out.println("请输入学生姓名:");String name = sc.next();System.out.println("请输入学生年龄:");String age = sc.nextAge();//创建学生对象,把键盘录入的数据赋值给学生对象的成员变量Student s = new Student(name,age);//往集合中添加学生对象return s;
}

☆1.7 集合删除元素(操作)

视频时长 / 09’52’’

1.7.1 「集合删除元素」问题

  1. 调用一次remove(Object o)是否能删除集合中指定的所有元素?

1.7.2 「集合删除元素」答案

  1. 调用一次remove(Object o)是否能删除集合中指定的所有元素?

    • 不行。remove()只能删除集合中的第一个元素。
    • 如果想要删除所有指定的元素,需要遍历集合。

1.7.3 「集合删除元素」课堂练习

练习时长:7分钟。

需求:创建集合对象,将任意字符串添加到集合中,添加的字符串中"java"有多个元素重复,切有些连在一次,要求删除所有"java"元素,最后打印集合。

public static void main(String[] args){//创建集合ArrayList<String> array = new ArrayList<String>();//添加元素array.add("hello");array.add("java");array.add("java");array.add("world");array.add("java");array.add("java");array.add("java");array.add("IOS");array.add("PHP");//遍历集合for(int i = 0;i < array.size();i++){String s = array.get(i);// 判断字符串是否是"java"if(s.equals("java")){// 如果是,则删除array.remove(i);// 删除后,元素会补位,所以将索引回退i--;}}System.out.println(array);
}

☆1.8 集合数据筛选(操作)

视频时长 / 08’32’’

1.8.1 「集合数据筛选」问题

  1. 视频中,getList()方法中的集合对象,同main方法中的集合对象是否是同一个?

1.8.2 「集合数据筛选」答案

  1. 视频中,getList()方法中的集合对象,同main方法中的集合对象是否是同一个?

    • 不是。getList()方法中新建了一个集合对象,所以同main方法中的集合对象不是同一个。而是两个完全不相干的集合。

1.8.3 「集合数据筛选」答案

练习时长:8分钟。

需求:定义一个方法,方法接收一个集合对象,方法内部先新建一个集合,再将传入集合中的年龄低于18岁的学生对象添加到新集合中,方法返回新集合。

public static void main(String[] args){//创建集合对象ArrayList<String> array = new ArrayList<String>();//往集合中添加字符串对象//创建学生对象Student s1 = new Student("林青霞", 30);Student s2 = new Student("风清扬", 13);Student s3 = new Student("张曼玉", 18);//添加学生对象到集合中array.add(s1);array.add(s2);array.add(s3);ArrayList<Student> newArray = getList(array);// 遍历for(int i = 0;i<list.size();i++){Student stu = newArray.get(i);System.out.println(stu.getName()+"---" + stu.getAge());}
}public static ArrayList<Student> getList(ArrayList<Student> list){// 创建一个新集合ArrayList<Student> array = new ArrayList<Student>();// 遍历集合找出年龄低于18岁的学生对象,添加到新集合中for(int i = 0;i<list.size();i++){Student s = list.get(i);if(s.getAge() >= 18){//添加到新集合中array.add(s);}}return array;
}

2 学生管理系统

☆2.1 学生管理系统项目演示(理解)

视频时长 / 03’23’’

2.1.1 「学生管理系统项目演示」问题

  1. 学生管理系统大概会使用到哪些学过的知识点?

2.1.2 「学生管理系统项目演示」答案

  1. 学生管理系统大概会使用到哪些学过的知识点?

    • 循环: 欢迎界面循环展示
    • 判断: 判断学号是否重复
    • 键盘录入: 用户录入数据
    • 集合: 存储学生对象
    • switch: 匹配用户选择

☆2.2 实现步骤分析和学生类的代码编写(操作)

视频时长 / 06’06’’

2.2.1 「实现步骤分析和学生类的代码编写」课堂练习

练习时长:4分钟。

需求:完成学生类的定义。

public class Student {//学号private String sid;//姓名private String name;//年龄private int age;//生日private String brithday;public Student() {}public Student(String sid, String name, int age, String brithday) {this.sid = sid;this.name = name;this.age = age;this.brithday = brithday;}public String getSid() {return sid;}public void setSid(String sid) {this.sid = sid;}public String getName() {return name;}public void setName(int name) {this.name = name;}public int getAge() {return age;}public void setAge(String age) {this.age = age;}public String getBrithday() {return brithday;}public void setBrithday(String brithday) {this.brithday = brithday;}
}

☆2.3 菜单搭建(操作)

视频时长 / 07’03’’

2.3.1 「菜单搭建」课堂练习

练习时长:6分钟。

需求:完成菜单搭建。

public static void main(String[] args) {//创建集合对象,用于保存学生数据信息ArrayList<Student> array = new ArrayList<Student>();//用循环完成再次回到主界面while (true) {//用输出语句完成主界面的编写System.out.println("--------欢迎来到学生管理系统--------");System.out.println("1 添加学生");System.out.println("2 删除学生");System.out.println("3 修改学生");System.out.println("4 查看所有学生");System.out.println("5 退出");System.out.println("请输入你的选择:");//用Scanner实现键盘录入数据Scanner sc = new Scanner(System.in);String line = sc.next();//用switch语句完成操作的选择switch (line) {case "1"://添加学生break;case "2"://删除学生break;case "3"://修改学生break;case "4":// 查看所有学生break;case "5":System.out.println("谢谢使用");System.exit(0); //JVM退出}}
}

☆2.4 添加学生逻辑-基本实现(操作)

视频时长 / 08’06’’

2.4.1 「添加学生逻辑-基本实现」课堂练习

练习时长:5分钟。

需求:完成添加学生逻辑。

//定义一个方法,用于添加学生信息
public static void addStudent(ArrayList<Student> array) {//键盘录入学生对象所需要的数据,显示提示信息,提示要输入何种信息Scanner sc = new Scanner(System.in);String sid = sc.next();System.out.println("请输入学生姓名:");String name = sc.next();System.out.println("请输入学生年龄:");int age = sc.next();System.out.println("请输入学生生日:");String brithday = sc.next();//创建学生对象,把键盘录入的数据赋值给学生对象的成员变量Student s = new Student(sid,name,age,brithday);//将学生对象添加到集合中array.add(s);//给出添加成功提示System.out.println("添加学生成功");
}

☆2.5 查看学生代码实现(操作)

视频时长 / 08’20"

2.5.1 「查看学生代码实现」课堂练习

练习时长:5分钟。

需求:完成添加学生逻辑。

//定义一个方法,用于查看学生信息
public static void findAllStudent(ArrayList<Student> array) {//判断集合中是否有数据,如果没有显示提示信息if (array.size() == 0) {System.out.println("无信息,请先添加信息再查询");//为了让程序不再往下执行,我们在这里写上return;return;}//显示表头信息//\t其实是一个tab键的位置System.out.println("学号\t\t\t姓名\t\t年龄\t\t生日"); //将集合中数据取出按照对应格式显示学生信息,年龄显示补充“岁”for (int i = 0; i < array.size(); i++) {Student s = array.get(i);System.out.println(s.getSid() + "\t" + s.getName() + "\t" + s.getAge() + "岁\t\t" + s.getBrithday());}
}

☆2.6 判断学号是否存在的方法定义(操作)

视频时长 / 09’52’‘’

2.6.1 「判断学号是否存在的方法定义」课堂练习

练习时长: 10分钟。

需求:完成下面案例。

 //定义一个方法,判断学号是否被使用
public static boolean getIndex(ArrayList<Student> array, String sid) {//如果与集合中的某一个学生学号相同,则index为对应的索引值,如果没有相同则index=-1int index = -1;// 遍历集合for(int i=0; i < array.size(); i++) {Student s = array.get(i);if(s.getSid().equals(sid)) {index = i;break;}}return index;
}

☆2.7 删除学生代码实现(操作)

视频时长 / 06’01’’

2.7.1 「删除学生代码实现」课堂练习

练习时长:7分钟

需求:完成删除学生代码实现。

 //定义一个方法,用于删除学生信息
public static void deleteStudent(ArrayList<Student> array) {//键盘录入要删除的学生学号,显示提示信息Scanner sc = new Scanner(System.in);System.out.println("请输入你要删除的学生的学号:");String sid = sc.nextLine();// 调用getIndex()获取sid学生所在集合中的索引位置// 如果不存在,则返回-1int index = getIndex(array,sid);if (index == -1) {System.out.println("该信息不存在,请重新输入");} else {array.remove(index);//给出删除成功提示System.out.println("删除学生成功");}
}

☆2.8 修改学生代码实现(操作)

视频时长 / 06’34’’

2.8.1 「修改学生代码实现」课堂练习

练习时长:8分钟。

需求:定义一个字符串,统计该字符串中大写字母字符,小写字母字符,数字字符出现的次数(不考虑其他字符)

//定义一个方法,用于修改学生信息
public static void updateStudent(ArrayList<Student> array) {//键盘录入要修改的学生学号,显示提示信息Scanner sc = new Scanner(System.in);System.out.println("请输入你要修改的学生的学号:");String sid = sc.nextLine();// 调用getIndex()获取sid学生所在集合中的索引位置// 如果不存在,则返回-1int index = getIndex(array,sid);if (index == -1) {System.out.println("该信息不存在,请重新输入");} else {//键盘录入要修改的学生信息System.out.println("请输入学生新姓名:");String name = sc.nextLine();System.out.println("请输入学生新年龄:");int age = sc.nextLine();System.out.println("请输入学生新生日:");String brithday = sc.nextLine();//创建学生对象Student s = new Student(sid,name,age,brithday);// 修改集合中的学生对象array.set(index,s);//给出修改成功提示System.out.println("修改学生成功");}
}

☆2.9 解决添加学生学号的重复问题(操作)

视频时长 / 06’09’’

2.9.1 「解决添加学生学号的重复问题」课堂练习

练习时长:5分钟

需求:完成解决添加学生学号的重复问题。

//定义一个方法,用于添加学生信息
public static void addStudent(ArrayList<Student> array) {//键盘录入学生对象所需要的数据,显示提示信息,提示要输入何种信息Scanner sc = new Scanner(System.in);String sid;while (true) {System.out.println("请输入学生学号:");sid = sc.nextLine();int index = getIndex(array, sid);if (index == -1) {// index=-1,则证明学号不存在,可以结束循环break;}}System.out.println("请输入学生姓名:");String name = sc.next();System.out.println("请输入学生年龄:");int age = sc.next();System.out.println("请输入学生生日:");String brithday = sc.next();//创建学生对象,把键盘录入的数据赋值给学生对象的成员变量Student s = new Student(sid,name,age,brithday);//将学生对象添加到集合中array.add(s);//给出添加成功提示System.out.println("添加学生成功");
}

葵花宝典:JavaSE-day09相关推荐

  1. 刘意JavaSE 学习笔记——总纲

    开始学习JavaSE了,记录下自己学习的进程. 学习大纲 1 开发环境配置 day01 配置 2 基础语法(基本差不多,看一下就好) day02 命名规则,进制转换 day03 运算符,if语句 da ...

  2. java学习笔记day09 final、多态、抽象类、接口

    java学习笔记day09 思维导图 final . 多态 . 抽象类 . 接口 (都很重要) 一.final 二.多态 多态中的成员访问特点⭐ [P237] 多态的好处 [P239] 多态的弊端 向 ...

  3. 【JAVA秒会技术之秒杀面试官】JavaSE常见面试题(四)

    [前言]别人都在你看不到的地方暗自努力,在你看得到的地方,他们也和你一样显得游手好闲,和你一样会抱怨,而只有你自己相信这些都是真的,最后,也只有你一个人继续不思进取 --   [下载]本人刚学习Jav ...

  4. Java面试题全集(上)+JavaSE基础

    三重:代码.底层内存.源码 第一阶段:开发常用 JavaSE基础.IDE.Maven.Gradle.SVN.Git.Spring.Spring MVC.Spring Boot.Spring Cloud ...

  5. JAVASE面试总结

    java面试题总结 JAVA面试题(JAVASE相关) 1.面向对象的特征有哪些方面? 2.访问修饰符public,private,protected,以及不写(默认)时的区别? 3.String 是 ...

  6. 【JavaSE】day03_Date、SimpleDateFormat、Calendar、Collection

    [JavaSE]day03_Date.SimpleDateFormat.Calendar.Collection 1.Date及其经常使用API 1)JAVA 中的时间 Java中的时间使用标准类库的D ...

  7. java视频为什么这么多_为什么看java教学视频教的都是javase,两者难道语言相同吗?...

    Java 分类 Java SE(Java Platform Standard Edition) :Java平台标准版.主要用于桌面应用程序的开发,是Java技术的核心,提供基础 Java开发工具.执行 ...

  8. 简述JavaME,JavaSE,JavaEE

    javaME:微型版,应用于移动等 JavaSE:标准版,应用于桌面环境 JavaEE:企业版,应用于基于Java的应用服务器 Java SE(Java Platform,Standard Editi ...

  9. javaee, javaweb和javase的区别以及各自的知识体系

    javaee, javaweb和javase的区别以及各自的知识体系 来源 https://blog.csdn.net/weixin_39297312/article/details/79454642 ...

  10. Java 基础入门随笔(1) JavaSE版——java语言三种技术架构

    1.java语言的三种技术架构: J2SE(java 2 Platform Standard Edition):标准版,是为开发普通桌面和商务应用程序提供的解决方案.该技术体系是其他两者的基础,可以完 ...

最新文章

  1. 前后端分离接口规范~
  2. python语言使用什么语句实现上下文管理协议_Python 技巧探究:上下文管理器和with语句...
  3. 秀尔算法:破解RSA加密的“不灭神话” --zz
  4. PP部分主数据导出SQVI设置
  5. kotlin将对象转换为map_在 Kotlin 的 data class 中使用 MapStruct
  6. sublime 消除锯齿_如何在Sublime中消除麻烦
  7. Redis集群搭建笔记
  8. 使用caffemodel模型(由mnist训练)测试单张手写数字样本
  9. 摄像头,一万块三个,嘿嘿!欢迎来到一年一度iPhone 吐槽大会!
  10. SQL FILESTREAM与数据库快照,镜像,TDE和日志传送的兼容性
  11. Android开发技术周报 Issue#69
  12. C语言字符串类型转换为整型,c语言中将一个字符串转换到整型数据类型的函数是什么?...
  13. maven配置eclipse案例及命令
  14. Kerberos认证模型(c语言实现)
  15. 计算机xp画板在哪找,xp系统画图工具在哪里|xp画图工具有什么功能
  16. 考软件测试自学钢琴,新手学钢琴用什么app-自学钢琴比较好的软件推荐 - Iefans...
  17. eclipse+ADT使用第三方静态库及COCOS2d问题汇总
  18. JSON数据导出Excel表
  19. 用C语言实现杨辉三角
  20. (附源码)ssm产品裂变管理系统 毕业设计 100953

热门文章

  1. vis实现类知识图谱的拓扑图
  2. 中文女与程序员的爱情
  3. 在Windows2008 R2 服务器上使用maven私有仓库
  4. 校园心理网站html模板,校园心理微电影剧本
  5. 湖北武汉高新计算机osta培训学校,在哪里报考OSTA高新计算机信息证书
  6. babylon.js 学习
  7. VOC和COCO数据集的介绍和转换
  8. 飞船打外星人(python)
  9. js如何删除数组的倒数第n个及后面元素
  10. python怎么写lnx_python数字计算(未完)