Java基础知识 第九天

今日内容介绍

对象数组

集合类之ArrayList

学生管理系统案例

第1章对象数组

1.1对象数组概述

A:基本类型的数组:存储的元素为基本类型

int[] arr=

B:对象数组:存储的元素为引用类型

Student [] stus=new Student[3];

Student代表一个自定义类

Stus数组中stus[0],stus[1],stus[2]的元素数据类型为Student,

都可以指向一个Student对象

1.2对象数组案例:

创建一个学生数组,存储三个学生对象并遍历

1.2.1案例代码一:

packagecom.xuexi;

publicclassStudent {

privateStringname;

privateintage;

publicStudent() {

}

publicStudent(String name,intage) {

this.name=name;

this.age=age;

}

publicString getName() {

returnname;

}

publicvoidsetName(String name) {

this.name=name;

}

publicintgetAge() {

returnage;

}

publicvoidsetAge(intage) {

this.age=age;

}

}

packagecom.xuexi;

/*

*创建一个学生数组,存储三个学生对象并遍历

*

*分析:

* A:定义学生类

* B:创建学生数组

* C:创建学生对象

* D:把学生对象作为元素赋值给学生数组

* E:遍历学生数组

*/

publicclassStudentDemo {

publicstaticvoidmain(String[] args) {

//创建学生数组

Student[]students =newStudent[3];

//创建学生对象

Students1 =newStudent("曹操",40);

Students2 =newStudent("刘备",35);

Students3 =newStudent("孙权",30);

//把学生对象作为元素赋值给学生数组

students[0]= s1;

students[1]= s2;

students[2]= s3;

//遍历学生数组

for(intx=0; x

Students = students[x];

//System.out.println(s);

}

}

}

1.3对象数组的内存图

第2章集合类之ArrayList

2.1集合概述

A:我们xuexi的是面向对象编程语言,而面向对象编程语言对事物的描述都是通过对象来体现的。

为了方便对多个对象进行操作,我们就必须对这多个对象进行存储,而要想对多个对象进行存储, 就不能是一个基本的变量,而应该是一个容器类型的变量。

B:到目前为止,我们xuexi过了哪些容器类型的数据呢?

StringBuilder,数组。

StringBuilder的结果只能是一个字符串类型,不一定满足我们的需求。

所以,我们目前只能选择数组了,也就是我们前面xuexi过的对象数组。

但是,数组的长度是固定的, 如果有时候元素的个数不确定的,我们无法定义出数组的长度,这个时候,java就提供了集合类供我们使用。

2.2ArrayList集合

2.2.1ArrayList添加新元素

2.2.1.1案例代码二:

packagecom.xuexi_01;

importjava.util.ArrayList;

/*

*集合类的特点:

*长度可变。

* ArrayList:

*大小可变数组的实现

* :是一种特殊的数据类型,泛型。

*怎么用呢?

*在出现E的地方我们使用引用数据类型替换即可

*举例:ArrayList,ArrayList

*

*构造方法:

* ArrayList()

*

*添加元素:

* publicboolean add(E e):添加元素

* publicvoid add(intindex,E element):在指定的索引处添加一个元素

*/

publicclassArrayListDemo {

publicstaticvoidmain(String[] args) {

//创建集合对象

ArrayListarray =newArrayList();

//add(E e):添加元素

array.add("hello");

array.add("world");

array.add("java");

}

}

2.2.2ArrayList删改查方法

A:获取元素

public E get(int index):返回指定索引处的元素

B:集合长度

publicint size():返回集合中的元素的个数

C:删除元素

publicboolean remove(Object o):删除指定的元素,返回删除是否成功

public E remove(int index):删除指定索引处的元素,返回被删除的元素

D:修改元素

public E set(int index,E element):修改指定索引处的元素,返回被修改的元素

2.2.2.1案例代码三:

packagecom.xuexi_01;

importjava.util.ArrayList;

publicclassArrayListDemo2 {

publicstaticvoidmain(String[] args) {

//创建集合对象

ArrayList array =newArrayList();

//添加元素

array.add("hello");

array.add("world");

array.add("java");

//输出

}

}

2.2.3ArrayList遍历

集合的遍历思想和数组的遍历思想相同

循环遍历容器,依次取出里面的元素即可

2.2.3.1案例代码四:

packagecom.xuexi_01;

importjava.util.ArrayList;

/*

* ArrayList集合的遍历

*通过size()和get()配合实现的

*/

publicclassArrayListDemo3 {

publicstaticvoidmain(String[] args) {

//创建集合对象

ArrayList array =newArrayList();

//添加元素

array.add("hello");

array.add("world");

array.add("java");

//原始做法

for(intx=0; x

}

//如何知道集合中元素的个数呢?size()

for(intx=0; x

}

//最标准的用法

for(intx=0; x

String s = array.get(x);

}

}

}

2.3ArrayList集合案例

2.3.1ArrayList练习之存储字符串并遍历

向集合中添加任意四个字符串,遍历集合,依次打印取出的字符串

2.3.1.1案例代码五:

packagecom.xuexi_02;

importjava.util.ArrayList;

/*

*存储字符串并遍历

*分析:

* A:创建集合对象

* B:添加字符串元素

* C:遍历集合

*/

publicclassArrayListTest {

publicstaticvoidmain(String[] args) {

//创建集合对象

ArrayList array =newArrayList();

//添加字符串元素

array.add("向问天");

array.add("刘正风");

array.add("左冷禅");

array.add("风清扬");

//遍历集合

for(intx=0; x

String s = array.get(x);

}

}

}

2.3.2ArrayList练习之获取满足要求的元素

给定一个字符串数组:{“张三丰”,“宋远桥”,“张无忌”,“殷梨亭”“张翠山”,“莫声谷”},将数组中的元素添加到集合中,并把所有姓张的人员打印到控制台上

2.3.2.1案例代码六:

packagecom.xuexi_02;

importjava.util.ArrayList;

/*

*分析:

* A:定义字符串数组

* B:创建集合对象

* C:遍历字符串数组,获取到每一个字符串元素

* D:把获取到的字符串元素添加到集合

* E:遍历集合

*要判断每一个字符串元素是否以"张"开头,如果是,就输出在控制台

*/

publicclassArrayListTest2 {

publicstaticvoidmain(String[] args) {

//定义字符串数组

String[] strArray = {"张三丰","宋远桥","张无忌","殷梨亭","张翠山","莫声谷"};

//创建集合对象

ArrayList array =newArrayList();

//遍历字符串数组,获取到每一个字符串元素

for(intx=0; x

//把获取到的字符串元素添加到集合

array.add(strArray[x]);

}

//遍历集合

for(intx=0; x

Strings = array.get(x);

//要判断每一个字符串元素是否以"张"开头,如果是,就输出在控制台

if(s.startsWith("张")) {

}

}

}

}

2.3.3ArrayList练习之存储自定义对象并遍历

A:自定义一个学生类,学生中有姓名和年龄属性,生成满参构造与空参构造

生成属性对应的getter/setter方法

B:在测试类中使用满参构造创建三个学生对象,然后将每个学生对象均添加到ArrayList集合中

C:遍历这个ArrayList集合,依次打印出每个学生的姓名和年龄

2.3.3.1案例代码七:

packagecom.xuexi_02;

publicclassStudent {

privateStringname;

privateintage;

publicStudent() {

}

publicStudent(String name,intage) {

this.name=name;

this.age=age;

}

publicString getName() {

returnname;

}

publicvoidsetName(String name) {

this.name=name;

}

publicintgetAge() {

returnage;

}

publicvoidsetAge(intage) {

this.age=age;

}

}

packagecom.xuexi_02;

importjava.util.ArrayList;

/*

*存储自定义对象并遍历

*

*分析:

* A:定义学生类

* B:创建集合对象

* C:创建学生对象

* D:把学生对象作为元素添加到集合中

* E:遍历集合

*/

publicclassArrayListTest3 {

publicstaticvoidmain(String[] args) {

//创建集合对象

ArrayListarray =newArrayList();

//创建学生对象

Student s1 =newStudent("林青霞",28);

Student s2 =newStudent("张曼玉",30);

Student s3 =newStudent("景甜",25);

Student s4 =newStudent("柳岩",18);

//把学生对象作为元素添加到集合中

array.add(s1);

array.add(s2);

array.add(s3);

array.add(s4);

//遍历集合

for(intx=0; x

Student s = array.get(x);

}

}

}

第3章学生管理系统案例

3.1学生管理系统案例需求

利用集合完成对学生的增删改查四个功能

3.2学生管理系统案例实现

3.2.1创建学生类:

3.2.1.1案例代码九:

packagecom.xuexi;

/*

*这是我的学生类

*/

publicclassStudent {

//学号

privateStringid;

//姓名

privateStringname;

//年龄

privateStringage;

//居住地

privateStringaddress;

publicStudent() {

}

publicStudent(String id, String name, Stringage, String address) {

this.id=id;

this.name=name;

this.age=age;

this.address= address;

}

publicString getId() {

returnid;

}

publicvoidsetId(String id) {

this.id=id;

}

publicString getName() {

returnname;

}

publicvoidsetName(String name) {

this.name=name;

}

publicString getAge() {

returnage;

}

publicvoidsetAge(String age) {

this.age=age;

}

publicString getAddress() {

returnaddress;

}

publicvoidsetAddress(String address) {

this.address= address;

}

}

3.2.2学生管理系统界面实现:

3.2.2.1案例代码十:

packagecom.xuexi;

importjava.util.ArrayList;

importjava.util.Scanner;

/*

*这是我的学生管理系统的主类

*

*步骤如下:

* A:定义学生类

* B:学生管理系统的主界面的代码编写

* C:学生管理系统的查看所有学生的代码编写

* D:学生管理系统的添加学生的代码编写

* E:学生管理系统的删除学生的代码编写

* F:学生管理系统的修改学生的代码编写

*/

publicclassStudentManagerTest{

publicstaticvoidmain(String[] args) {

//创建集合对象,用于存储学生数据

ArrayListarray=newArrayList();

//为了让程序能够回到这里来,我们使用循环

while(true){

//这是学生管理系统的主界面

//创建键盘录入对象

Scanner sc =newScanner(System.in);

String choiceString = sc.nextLine();

//用switch语句实现选择

switch(choiceString) {

case"1":

//查看所有学生

break;

case"2":

//添加学生

break;

case"3":

//删除学生

break;

case"4":

//修改学生

break;

case"5":

//退出

// System.out.println("谢谢你的使用");

// break;

default:

System.exit(0);// JVM退出

break;

}

}

}

}

3.2.3学生管理系统之查询所有学生功能

3.2.3.1案例代码十一:

importjava.util.ArrayList;

importjava.util.Scanner;

publicclassStudentManagerTest{

publicstaticvoidmain(String[] args) {

//创建集合对象,用于存储学生数据

ArrayList array =newArrayList();

//为了让程序能够回到这里来,我们使用循环

while(true){

//这是学生管理系统的主界面

//创建键盘录入对象

Scanner sc =newScanner(System.in);

StringchoiceString= sc.nextLine();

//用switch语句实现选择

switch(choiceString) {

case"1":

//查看所有学生

findAllStudent(array);

break;

case"2":

//添加学生

break;

case"3":

//删除学生

break;

case"4":

//修改学生

break;

case"5":

//退出

//System.out.println("谢谢你的使用");

//break;

default:

System.exit(0);//JVM退出

break;

}

}

}

//查看所有学生

publicstaticvoidfindAllStudent(ArrayList array) {

//首先来判断集合中是否有数据,如果没有数据,就给出提示,并让该方法不继续往下执行

if(array.size() == 0) {

return;

}

//\t其实就是一个tab键的位置

for(intx=0; x

Student s = array.get(x);

}

}

}

3.2.4学生管理系统之添加学生功能

3.2.4.1案例代码十二:

packagecom.xuexi;

importjava.util.ArrayList;

importjava.util.Scanner;

publicclassStudentManagerTest{

publicstaticvoidmain(String[] args) {

//创建集合对象,用于存储学生数据

ArrayList array =newArrayList();

//为了让程序能够回到这里来,我们使用循环

while(true){

//这是学生管理系统的主界面

//创建键盘录入对象

Scanner sc =newScanner(System.in);

String choiceString = sc.nextLine();

//用switch语句实现选择

switch(choiceString) {

case"1":

//查看所有学生

break;

case"2":

//添加学生

addStudent(array);

break;

case"3":

//删除学生

break;

case"4":

//修改学生

break;

case"5":

//退出

//System.out.println("谢谢你的使用");

//break;

default:

System.exit(0);//JVM退出

break;

}

}

}

//添加学生

publicstaticvoidaddStudent(ArrayList array) {

//创建键盘录入对象

Scanner sc =newScanner(System.in);

//为了让id能够被访问到,我们就把id定义在了循环的外面

String id;

//为了让代码能够回到这里,用循环

while(true){

//String id = sc.nextLine();

id= sc.nextLine();

//判断学号有没有被人占用

//定义标记

booleanflag =false;

//遍历集合,得到每一个学生

for(intx=0; x

Student s = array.get(x);

//获取该学生的学号,和键盘录入的学号进行比较

if(s.getId().equals(id)) {

flag=true;//说明学号被占用了

break;

}

}

if(flag) {

}else{

break;//结束循环

}

}

String name = sc.nextLine();

String age = sc.nextLine();

String address = sc.nextLine();

//创建学生对象

Student s =newStudent();

s.setId(id);

s.setName(name);

s.setAge(age);

s.setAddress(address);

//把学生对象作为元素添加到集合

array.add(s);

//给出提示

}

}

3.2.5学生管理系统之删除学生功能

3.2.5.1案例代码十三:

packagecom.xuexi;

importjava.util.ArrayList;

importjava.util.Scanner;

publicclassStudentManagerTest{

publicstaticvoidmain(String[] args) {

//创建集合对象,用于存储学生数据

ArrayList array =newArrayList();

//为了让程序能够回到这里来,我们使用循环

while(true){

//这是学生管理系统的主界面

//创建键盘录入对象

Scanner sc =newScanner(System.in);

String choiceString = sc.nextLine();

//用switch语句实现选择

switch(choiceString) {

case"1":

//查看所有学生

break;

case"2":

//添加学生

break;

case"3":

//删除学生

deleteStudent(array);

break;

case"4":

//修改学生

break;

case"5":

//退出

//System.out.println("谢谢你的使用");

//break;

default:

System.exit(0);//JVM退出

break;

}

}

}

//删除学生

publicstaticvoiddeleteStudent(ArrayList array) {

//删除学生的思路:键盘录入一个学号,到集合中去查找,看是否有学生使用的是该学号,如果有就删除该学生

//创建键盘录入对象

Scanner sc =newScanner(System.in);

String id = sc.nextLine();

//我们必须给出学号不存在的时候的提示

//定义一个索引

intindex = -1;

//遍历集合

for(intx=0; x

//获取到每一个学生对象

Student s = array.get(x);

//拿这个学生对象的学号和键盘录入的学号进行比较

if(s.getId().equals(id)) {

index= x;

break;

}

}

if(index == -1) {

}else{

array.remove(index);

}

}

}

3.2.6学生管理系统之修改学生功能

3.2.6.1案例代码十四:

packagecom.xuexi;

importjava.util.ArrayList;

importjava.util.Scanner;

publicclassStudentManagerTest{

publicstaticvoidmain(String[] args) {

//创建集合对象,用于存储学生数据

ArrayListarray =newArrayList();

//为了让程序能够回到这里来,我们使用循环

while(true){

//这是学生管理系统的主界面

//创建键盘录入对象

Scanner sc =newScanner(System.in);

String choiceString = sc.nextLine();

//用switch语句实现选择

switch(choiceString) {

case"1":

//查看所有学生

break;

case"2":

//添加学生

break;

case"3":

//删除学生

break;

case"4":

//修改学生

updateStudent(array);

break;

case"5":

//退出

//System.out.println("谢谢你的使用");

//break;

default:

System.exit(0);//JVM退出

break;

}

}

}

//修改学生

publicstaticvoidupdateStudent(ArrayList array) {

//修改学生的思路:键盘录入一个学号,到集合中去查找,看是否有学生使用的是该学号,如果有就修改该学生

//创建键盘录入对象

Scanner sc =newScanner(System.in);

String id = sc.nextLine();

//定义一个索引

intindex = -1;

//遍历集合

for(intx=0; x

//获取每一个学生对象

Student s = array.get(x);

//拿学生对象的学号和键盘录入的学号进行比较

if(s.getId().equals(id)) {

index= x;

break;

}

}

if(index == -1) {

}else{

String name = sc.nextLine();

String age = sc.nextLine();

String address = sc.nextLine();

//创建学生对象

Student s =newStudent();

s.setId(id);

s.setName(name);

s.setAge(age);

s.setAddress(address);

//修改集合中的学生对象

array.set(index,s);

//给出提示

}

}

}

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180516G09YAH00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券