资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,*,第五课,数 组,本,课内容,一维数组的声明和初始化,数组元素的引用,二维数组的声明和使用,数组拷贝,2,数组概述,数组是多个相同类型数据的组合,实现对这些数据的统一管理,数组属引用类型,数组型数据是对象,(object),,,数组中的每个元素相当于该对象的成员变量,数组中的元素可以是任何数据类型,包括基本类型和引用类型,3,一维数组声明,一维数组的声明方式:,type,var,或,type,var,;,例如:,int,a;,int,a1;,double b;,Mydate,c;,Java,语言中,声明数组时不能指定其长度,(,数组中元素的个数,),,例如:,int,a5;,/,非法,4,创建数组,(1),public class Test,public static void main(String,args,),int,s;,s=new int10;,for(,int,i=0;i10;i+),si=2*i+1;,System.out.println(si,);,Java,中使用关键字,new,创建数组对象,创建基本数据类型一维数组对象演示,1,main,栈内存,s,堆内存,处内存状态,5,创建数组,(2),创建基本数据类型一维数组对象演示,2,main,栈内存,s,0,int,对象,0,0,0,0,0,0,0,0,0,堆内存,处内存状态,public class Test,public static void main(String,args,),int,s;,s=new int10;,for(,int,i=0;i10;i+),si=2*i+1;,System.out.println(si,);,6,创建数组,(3),main,栈内存,s,1,int,对象,3,5,7,9,11,13,15,17,19,堆内存,public class Test,public static void main(String,args,),int,s;,s=new int10;,for(,int,i=0;i10;i+),si=2*i+1;,System.out.println(si,);,处内存状态,创建基本数据类型一维数组对象演示,3,7,创建数组,(4),创建元素为引用数据类型的数组,class,MyDate,private,int,day;,private,int,month;,private,int,year;,public,MyDate(int,d,int,m,int,y),day=d;month=m;year=y;,public void display(),System.out.println(day,+-+month+-+year);,8,创建数组,(5),public class Test,public static void main(String,args,),MyDate,m;,m=new MyDate10;,for(,int,i=0;i10;i+),mi=new MyDate(i+1,i+1,1990+i);,mi.display();,main,栈内存,m,堆内存,创建元素为引用数据类型的数组演示,1,处内存状态,9,创建数组,(6),public class Test,public static void main(String,args,),MyDate,m;,m=new MyDate10;,for(,int,i=0;i10;i+),mi=new MyDate(i+1,i+1,1990+i);,mi.display();,main,栈内存,m,null,MyDate,对象,null,null,null,null,null,null,null,null,null,堆内存,创建元素为引用数据类型的数组演示,1,处内存状态,10,创建数组,(7),Java,中使用关键字,new,创建数组对象,main,栈内存,m,*,MyDate,对象,*,*,null,null,null,null,null,null,null,堆内存,1,1,1990,2,2,1991,3,3,1992,public class Test,public static void main(String,args,),MyDate,m;,m=new MyDate10;,for(,int,i=0;i10;i+),mi=new MyDate(i+1,i+1,1990+i);,mi.display();,for,循环执行三次后内存状态,11,数组初始化,动态初始化,数组定义与为数组元素分配空间并赋值的操作分开进行。,MyDate,dates;,dates=new MyDate3;,dates0=new MyDate(22,7,1964);,dates1=new MyDate(1,1,2000);,dates2=new MyDate(22,12,1964);,int,a;,a =new int3;,a0=3;,a1=9;,a2=8;,12,数组初始化,静态初始化:,在定义数组的同时就为数组元素分配空间并赋值。,int,a=3,9,8;,MyDate,dates=,new MyDate(22,7,1964),new MyDate(1,1,2000),new MyDate(22,12,1964),;,13,数组元素的默认初始化,数组是引用类型,它的元素,相当于类的成员变量,,因此数组一经分配空间,其中的每个元素也被按照成员变量同样的方式被隐式初始化。例如:,public class Test,public static void main(String,argv,),int,a=new int5;,System.out.println(a3);,14,数组元素的引用,定义并用运算符,new,为之分配空间后后,才可以引用数组中的每个元素;,数组元素的引用方式:,arrayNameindex,index,为数组元素下标,可以是整型常量或整型表达式。如,a3,bi,c6*i;,数组元素下标从,0,开始;长度为,n,的数组合法下标取值范围:,0 n-1,;,每个数组都有一个属性,length,指明它的长度,例如:,a.length,指明数组,a,的长度,(,元素个数,),;,15,Ex1,编写一应用程序实现下述功能:创建一基本,(primitive),数据类型的数组并输出各数组元素的值。例如:,char s;,s=new char26;,for(,int,i=0;i26;i+),si=(char)(A+i);,System.out.println(si,);,/,System.out.println(“s,”+i+“=”+si);,编写一应用程序练习数组对象的两种初始化方式,并输出各元素的值。,编写程序,练习使用数组类型对象的,length,属性,测试并体会数组元素的默认初始化机制;,16,多维数组,(1),二维数组举例:,int,a=1,2,3,4,0,9,5,6,7;,i j,j=0,j=1,j=2,j=3,i=0,1,2,i=1,3,4,0,9,i=2,5,6,7,17,多维数组,(2),Java,中多维数组被做为数组的数组处理,Java,中多维数组的声明和初始化应按从高维到低维的顺序进行,int,t =new,int,4;,t0=new int5;,t1=new int5;,int,t1=new,int,4;,/,非法,18,多维数组,(3),Java,中多维数组不必须是规则矩阵形式,int,tt,=new int4;,tt0=new int2;,tt1=new int4;,tt2=new int6;,tt3=new int8;,int,tt,=new int45;,19,多维数组初始化,静态初始化:,int,intArray,=1,2,2,3,3,4,5;,int,intArray1,3,2,=1,2,2,3,4,5;,/illegal,动态初始化,int,a=new int45;,int,b=new int3,b0=new int2;,b1=new int3;,b2=new int5;,20,Ex2,编写一应用程序实现下述功能:创建一基本,(primitive),数据类型的二维数组并输出各数组元素的值。例如:,int,a=1,2,2,3,4,5,5,6,7;,for(int,i=0;i3;i+),for(int,j=0;j,ai.length,;j+),System.out.println(intArray1ij);,21,复制数组,Java.lang.System,类的,arraycopy,(),方法提供了数组元素复制功能:,/,源数组,int,source=1,2,3,4,5,6;,/,目的数组,int,dest,=10,9,8,7,6,5,4,3,2,1;,/,复制源数组中从下标,0,开始的,source.length,个元素到,/,目的数组,从下标,0,的位置开始存储。,System.arraycopy(source,0,dest,0,source.length),;,22,Ex3,编写一应用程序练习数组复制方法,并输出在复制操作执行前后,dest,数组各元素的值。,建议输出采用,System.out.,print,(+holdi);,方法。,23,
展开阅读全文