Java基础知识-对象数组及二维数组.ppt
《Java基础知识-对象数组及二维数组.ppt》由会员分享,可在线阅读,更多相关《Java基础知识-对象数组及二维数组.ppt(72页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第2章章 对象数组及二维数组对象数组及二维数组课程回顾:课程回顾:OOOO:属性:属性:属性:属性+行为行为行为行为特性:封装特性:封装特性:封装特性:封装+继承继承继承继承+多态多态多态多态第第2章章 对象数组及二维数组对象数组及二维数组Java基础知识基础知识变量、数据类型、判定语句、循环语句变量、数据类型、判定语句、循环语句变量、数据类型、判定语句、循环语句变量、数据类型、判定语句、循环语句第第2章章 对象数组及二维数组对象数组及二维数组l l用数组存储对象用数组存储对象用数组存储对象用数组存储对象 l l对数组元素进行排序对数组元素进行排序对数组元素进行排序对数组元素进行排序 l l
2、在已排序的数组中查找在已排序的数组中查找在已排序的数组中查找在已排序的数组中查找 l l二维数组二维数组二维数组二维数组 数组元素可以是任何类型(只要所有元素数组元素可以是任何类型(只要所有元素具有相同的类型)具有相同的类型)l l数组元素可以是基本数据类型数组元素可以是基本数据类型数组元素可以是基本数据类型数组元素可以是基本数据类型l l数组元素也可以是类对象,称这样的数组为数组元素也可以是类对象,称这样的数组为数组元素也可以是类对象,称这样的数组为数组元素也可以是类对象,称这样的数组为对象对象对象对象数组数组数组数组。在这种情况下,数组的每一个元素都是一。在这种情况下,数组的每一个元素都是
3、一。在这种情况下,数组的每一个元素都是一。在这种情况下,数组的每一个元素都是一个对象的引用。个对象的引用。个对象的引用。个对象的引用。用数组存储对象用数组存储对象例如例如例如例如,BankAccount accounts;BankAccount accounts;BankAccount accounts;BankAccount accounts;或或或或BankAccount accounts;BankAccount accounts;BankAccount accounts;BankAccount accounts;定义了一个存储定义了一个存储定义了一个存储定义了一个存储BankAccoun
4、tBankAccountBankAccountBankAccount类对象的数组。类对象的数组。类对象的数组。类对象的数组。与与与与C C C C、C+C+C+C+不同,不同,不同,不同,JavaJavaJavaJava在数组的在数组的在数组的在数组的定义中并不为数组定义中并不为数组定义中并不为数组定义中并不为数组元素分配内存元素分配内存元素分配内存元素分配内存,因此,因此,因此,因此 中不需指明数组中元素的中不需指明数组中元素的中不需指明数组中元素的中不需指明数组中元素的个数,即数组长度,而且对于如上定义的数组是个数,即数组长度,而且对于如上定义的数组是个数,即数组长度,而且对于如上定义的数
5、组是个数,即数组长度,而且对于如上定义的数组是不能引用的,不能引用的,不能引用的,不能引用的,必须经过初始化才可以引用必须经过初始化才可以引用必须经过初始化才可以引用必须经过初始化才可以引用。用数组存储对象用数组存储对象对象数组的初始化对象数组的初始化分为分为静态初始化静态初始化和和动态初始化动态初始化静态初始化:在定义数组的同时对数组元素进行静态初始化:在定义数组的同时对数组元素进行初始化,初始化,例如:例如:BankAccount accounts=new BankAccount(BankAccount accounts=new BankAccount(“Zhang“Zhang,100.0
6、0),100.00),new BankAccount(new BankAccount(“Li“Li,2380.00),2380.00),new BankAccount(new BankAccount(“Wang“Wang,500.00),500.00),new BankAccount(new BankAccount(“Liu“Liu,175.56),175.56),new BankAccount(new BankAccount(“Ma“Ma,924.02),924.02);用数组存储对象用数组存储对象动态初始化动态初始化动态初始化动态初始化:使用运算符:使用运算符newnew为数组分配空间,为
7、数组分配空间,对对于基本类型的数组,其格式如下:于基本类型的数组,其格式如下:type arrayName=new typearraySize;type arrayName=new typearraySize;type arrayName=new typearraySize;type arrayName=new typearraySize;对对于于对对象象数数组组,使使用用运运算算符符new只只是是为为数数组组本本身身分分配配空空间间,并并没没有有对对数数组组的的元元素素进进行行初初始始化化。即即数数组组元素都为空,如图元素都为空,如图。数组元素未初始化的对象数组数组元素未初始化的对象数组用数
8、组存储对象用数组存储对象此此时时不不能能访访问问数数组组的的任任何何元元素素,必必须须对对数数组组元元素素进进行行初初始始化化后后,才才能能访访问问。因因此此,对对于于对对象象数数组组,需需要经过两步空间分配。首先给数组分配空间:要经过两步空间分配。首先给数组分配空间:type arrayName=new typearraySize;然后给每一个数组元素分配空间:然后给每一个数组元素分配空间:arrayName0=new type(paramList);arrayNamearraySize-1=new type(paramList);用数组存储对象用数组存储对象例如:例如:例如:例如:/定义一
9、个String类型的数组StringstringArrar;/给数组stringArray分配3个引用空间,每个引用值为null。stringArray=newString3;/下面给数组元素分配空间stringArray0=newString(“how”);stringArray1=newString(“are”);stringArray2=newString(“you”);用数组存储对象用数组存储对象当给数组元素分配了内存空间后,就可以引用了。当给数组元素分配了内存空间后,就可以引用了。数组元素的引用方式为:数组元素的引用方式为:arrayNameindexindex为为数数组组下下标标,
10、下下标标从从0开开始始,一一直直到到数数组组长长度减度减1。下标可以是整型常数或表达式。下标可以是整型常数或表达式。Java对数组元素要进行越界检查以保证安全性。对数组元素要进行越界检查以保证安全性。同时,对于每个数组都有一个同时,对于每个数组都有一个属性属性length指明它指明它的长度(这里即是数组元素的个数)。例如,的长度(这里即是数组元素的个数)。例如,stringArray.length指明数组指明数组stringArray的长的长度。度。用数组存储对象用数组存储对象对象数组应用举例对象数组应用举例l l使用数组对一个班的学生信息及考试成绩使用数组对一个班的学生信息及考试成绩进行存储
11、,学生信息包括学号、姓名、三进行存储,学生信息包括学号、姓名、三门课(英语、数学、计算机)的成绩及总门课(英语、数学、计算机)的成绩及总成绩。成绩。用数组存储对象用数组存储对象首先定义学生类首先定义学生类首先定义学生类首先定义学生类StudentStudentStudentStudent:属属属属性性性性包包包包括括括括:学学学学号号号号(idididid),姓姓姓姓名名名名(namenamenamename),英英英英语语语语成成成成绩绩绩绩(engengengeng),数数数数 学学学学 成成成成 绩绩绩绩(mathmathmathmath),计计计计 算算算算 机机机机 成成成成 绩绩绩
12、绩(compcompcompcomp),总成绩(),总成绩(),总成绩(),总成绩(sumsumsumsum)。)。)。)。方方方方 法法法法 包包包包 括括括括:构构构构 造造造造 方方方方 法法法法,getgetgetget方方方方 法法法法,setsetsetset方方方方 法法法法,toStringtoStringtoStringtoString方方方方法法法法,equalsequalsequalsequals方方方方法法法法,comparecomparecomparecompare方方方方法法法法(比比比比较较较较两两两两个个个个学学学学生生生生的的的的总总总总成成成成绩绩绩绩,结结
13、结结果果果果分分分分大大大大于于于于,小小小小于于于于,等等等等于于于于),sumsumsumsum方法(计算总成绩)。方法(计算总成绩)。方法(计算总成绩)。方法(计算总成绩)。为了能够将为了能够将为了能够将为了能够将StudentStudentStudentStudent类对象直接存储,应使其加入类对象直接存储,应使其加入类对象直接存储,应使其加入类对象直接存储,应使其加入串行化协议。代码如下:串行化协议。代码如下:串行化协议。代码如下:串行化协议。代码如下:用数组存储对象用数组存储对象/Student.javaimportjava.io.*;publicclassStudentimple
14、mentsSerializableprivateStringid;/学号privateStringname;/姓名privateinteng;/英语成绩privateintmath;/数学成绩privateintcomp;/计算机成绩privateintsum;/总成绩用数组存储对象用数组存储对象/构造方法publicStudent(Stringid,Stringname,inteng,intmath,intcomp)this.id=id;this.name=name;this.eng=eng;this.math=math;p=comp;sum();/计算总成绩用数组存储对象用数组存储对象/构
15、造方法publicStudent(Students)this.id=s.id;this.name=newString(s.name);this.eng=s.eng;this.math=s.math;p=p;sum();/计算总成绩用数组存储对象用数组存储对象/set方法publicvoidsetId(Stringid)this.id=id;publicvoidsetName(Stringname)this.name=name;publicvoidsetEng(inteng)this.eng=eng;sum();/计算总成绩用数组存储对象用数组存储对象/set方法publicvoidsetMat
16、h(intmath)this.math=math;sum();/计算总成绩publicvoidsetComp(intcomp)p=comp;sum();/计算总成绩用数组存储对象用数组存储对象/get方法publicStringgetId()returnid;publicStringgetName()returnname;publicintgetEng()returneng;publicintgetMath()returnmath;publicintgetComp()returncomp;publicintgetSum()returnsum;用数组存储对象用数组存储对象/计算总成绩voidsu
17、m()this.sum=eng+math+comp;/toString方法publicStringtoString()returngetId()+t+getName()+t+getEng()+t+getMath()+t+getComp()+t+getSum();用数组存储对象用数组存储对象/比较两个Student对象的值是否相等publicbooleanequals(Objectx)if(this.getClass()!=x.getClass()returnfalse;Studentb=(Student)x;return(this.getId().equals(b.getId();用数组存储对
18、象用数组存储对象/比较成绩大小,当前对象成绩比参数对象成绩大时返回1,/相等时返回0,其它返回-1.publicintcompare(StudentA)if(this.getSum()A.getSum()return1;elseif(this.getSum()=A.getSum()return0;elsereturn-1;用数组存储对象用数组存储对象下面定义班级类下面定义班级类StudentClassStudentClass:属属 性性 包包 括括:班班 级级 名名 称称(namename),容容 量量(capacitycapacity),学学生生(studentsstudents),实实际际
19、人人数数(sizesize)。)。方法包括方法包括:构造方法,:构造方法,getget方法,方法,setset方法,方法,toString toString方法。方法。用数组存储对象用数组存储对象/StudentClass.java/定义学生班级类StudentClasspublicclassStudentClassprivateStringname;/班级名称staticintcapacity=40;/最大容量privateStudentstudents;/学生privateintsize;/实际人数 用数组存储对象用数组存储对象/构造方法构造方法publicStudentClass(Str
20、ingname,intsize)this.name=name;this.size=size;students=newStudentcapacity;用数组存储对象用数组存储对象/get方法publicStringgetName()returnname;publicintgetCapacity()returncapacity;publicStudentgetStudents()returnstudents;publicintgetSize()returnsize;用数组存储对象用数组存储对象/set方法publicvoidsetName(Stringname)this.name=name;pub
21、licvoidsetCapacity(intcapacity)this.capacity=capacity;publicvoidsetSize(intsize)this.size=size;publicvoidsetStudents(Studentstudents)for(inti=0;isize;i+)this.studentsi=newStudent(studentsi);用数组存储对象用数组存储对象/toString/toString方法方法publicStringtoString()Strings;s=班级:+name+t+容量:+capacity+t+实际人数:+size+nn;s=
22、s+学号+t+姓名+t+英语+t+数学+t+计算机+t+总成绩n;for(inti=0;isize;i+)s=s+studentsi.getId()+t+studentsi.getName()+t+studentsi.getEng()+t+studentsi.getMath()+t+studentsi.getComp()+t+studentsi.getSum()+n;returns;用数组存储对象用数组存储对象定定定定义义义义测测测测试试试试类类类类Tester1Tester1Tester1Tester1:为为为为测测测测试试试试简简简简单单单单,仅仅仅仅生生生生成成成成具具具具有有有有5 5
23、 5 5名名名名学学学学生生生生的的的的班班班班级级级级,5 5 5 5名名名名学学学学生生生生的的的的信信信信息息息息从从从从键键键键盘盘盘盘输输输输入入入入,为为为为了了了了避避避避免免免免以以以以后后后后再再再再重重重重复复复复输输输输入入入入,可可可可将将将将输输输输入入入入的的的的学学学学生生生生信信信信息息息息保保保保存到文件中。存到文件中。存到文件中。存到文件中。用数组存储对象用数组存储对象importjava.io.*;publicclassTester1publicstaticvoidmain(Stringargs)Studentstudents;StudentClassaC
24、lass=newStudentClass(软件06,5);students=newStudent5;for(inti=0;i5;i+)studentsi=newStudent(getAStudent(i+1);aClass.setStudents(students);System.out.println(aClass);用数组存储对象用数组存储对象/将学生信息保存到文件stu.ser中。tryFileOutputStreamfo=newFileOutputStream(stu.ser);ObjectOutputStreamso=newObjectOutputStream(fo);for(int
25、i=0;i5;i+)so.writeObject(studentsi);so.close();catch(Exceptione)System.out.println(e);用数组存储对象用数组存储对象/从键盘输入一个学生的信息从键盘输入一个学生的信息publicstaticStudentgetAStudent(inti)Studentstudenti;System.out.println(输入第+i+个学生的信息:);System.out.print(学号:);Stringid=Keyboard.getString();System.out.print(姓名:);Stringname=Keyb
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 基础知识 对象 数组 二维
限制150内