《Java精解案例教程 第5课数组.ppt》由会员分享,可在线阅读,更多相关《Java精解案例教程 第5课数组.ppt(23页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第五课数数 组组本课内容一维数组的声明和初始化一维数组的声明和初始化数组元素的引用数组元素的引用二维数组的声明和使用二维数组的声明和使用数组拷贝数组拷贝数组概述数数组组是是多多个个相相同同类类型型数数据据的的组组合合,实实现现对对这这些些数据的统一管理数据的统一管理数数组组属属引引用用类类型型,数数组组型型数数据据是是对对象象(object),数组中的每个元素相当于该对象的成员变量数组中的每个元素相当于该对象的成员变量数数组组中中的的元元素素可可以以是是任任何何数数据据类类型型,包包括括基基本本类型和引用类型类型和引用类型一维数组声明一维数组的声明方式:一维数组的声明方式:typevar或或t
2、ypevar;例如:例如:inta;inta1;doubleb;Mydatec;Java语言中语言中声明数组时不能指定其长度声明数组时不能指定其长度(数组数组中元素的个数中元素的个数),例如:,例如:inta5;/非法非法创建数组创建数组(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 创建数组对象创建数组对象 创建基本数据类型一维数组对象演示创建基本数据
3、类型一维数组对象演示1main栈内存s堆内存处内存状态创建数组创建数组(2)创建基本数据类型一维数组对象演示创建基本数据类型一维数组对象演示2main栈内存s0int对象000000000堆内存处内存状态 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)main栈内存s1int对象35791113151719堆内存 public class Test public static
4、 void main(String args)int s;s=new int10;for(int i=0;i10;i+)si=2*i+1;System.out.println(si);处内存状态 创建基本数据类型一维数组对象演示3创建数组创建数组(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.o
5、ut.println(day+-+month+-+year);创建数组创建数组(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处内存状态创建数组创建数组(6)public class Test public static void main(String args)MyDate m;m=new MyD
6、ate10;for(int i=0;i10;i+)mi=new MyDate(i+1 ,i+1,1990+i);mi.display();main栈内存mnullMyDate对象nullnullnullnullnullnullnullnullnull堆内存 创建元素为引用数据类型的数组演示1处内存状态创建数组创建数组(7)Java中使用关键字中使用关键字new 创建数组对象创建数组对象main栈内存m*MyDate对象*nullnullnullnullnullnullnull堆内存111990221991331992 public class Test public static void m
7、ain(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循环执行三次后内存状态循环执行三次后内存状态数组初始化数组初始化 动态初始化动态初始化 数组定义与为数组元素分配空间并赋值的操作分开进行。数组定义与为数组元素分配空间并赋值的操作分开进行。MyDate dates;dates=new MyDate3;dates0=new MyDate(22,7,1964);dates1=new MyDate(1,1,2000);dates2=new M
8、yDate(22,12,1964);int a;a =new int3;a0=3;a1=9;a2=8;数组初始化数组初始化 静态初始化:静态初始化:在定义数组的同时就为数组元素分配空间并赋值。在定义数组的同时就为数组元素分配空间并赋值。int a=3,9,8;MyDate dates=new MyDate(22,7,1964),new MyDate(1,1,2000),new MyDate(22,12,1964);数组元素的默认初始化数组元素的默认初始化数组是引用类型,它的元素数组是引用类型,它的元素相当于类的成员相当于类的成员变量变量,因此数组一经分配空间,其中的每个,因此数组一经分配空间,
9、其中的每个元素也被按照成员变量同样的方式被隐式初元素也被按照成员变量同样的方式被隐式初始化。例如:始化。例如:publicclassTestpublicstaticvoidmain(Stringargv)inta=newint5;System.out.println(a3);数组元素的引用数组元素的引用定义并用运算符定义并用运算符new为之分配空间后后,才可以引用数组为之分配空间后后,才可以引用数组中的每个元素;中的每个元素;数组元素的引用方式:数组元素的引用方式:arrayNameindexindex为数组元素下标,可以是整型常量或整型表达式。如为数组元素下标,可以是整型常量或整型表达式。如
10、a3,bi,c6*i;数组元素下标从数组元素下标从0开始;长度为开始;长度为n的数组合法下标取值范围:的数组合法下标取值范围:0n-1;每个数组都有一个属性每个数组都有一个属性length指明它的长度,例如:指明它的长度,例如:a.length指明数组指明数组a的长度的长度(元素个数元素个数);多维数组多维数组(1)二维数组举例:int a=1,2,3,4,0,9,5,6,7;ijj=0j=1j=2j=3i=012i=13409i=2567多维数组多维数组(2)Java中多维数组被做为数组的数组处理中多维数组被做为数组的数组处理Java中多维数组的声明和初始化应按从高中多维数组的声明和初始化应
11、按从高维到低维的顺序进行维到低维的顺序进行int t =new int 4;*t0=new int5;t1=new int5;int t1=new int 4;/非法非法栈内存mnullMyDate对象nullnullnull堆内存多维数组多维数组(2)Java中多维数组被做为数组的数组处理中多维数组被做为数组的数组处理Java中多维数组的声明和初始化应按从高中多维数组的声明和初始化应按从高维到低维的顺序进行维到低维的顺序进行int t =new int 4;t0=new int5;*t1=new int5;int t1=new int 4;/非法非法栈内存mxxxxxMyDate对象null
12、nullnull堆内存00000多维数组多维数组(2)Java中多维数组被做为数组的数组处理中多维数组被做为数组的数组处理Java中多维数组的声明和初始化应按从高中多维数组的声明和初始化应按从高维到低维的顺序进行维到低维的顺序进行int t =new int 4;t0=new int5;t1=new int5;*int t1=new int 4;/非法非法栈内存mxxxxxMyDate对象xxxxxnullnull堆内存0000000000多维数组多维数组(3)Java中多维数组不必须是规则矩阵形式中多维数组不必须是规则矩阵形式int tt=new int4;tt0=new int2;tt1=
13、new int4;tt2=new int6;tt3=new int8;int tt=new int45;多维数组初始化多维数组初始化 静态初始化:静态初始化:int intArray=1,2,2,3,3,4,5;int intArray132=1,2,2,3,4,5;/illegal 动态初始化动态初始化int a=new int45;int b=new int3 b0=new int2;b1=new int3;b2=new int5;复制数组复制数组Java.lang.System类类的的arraycopy()方方法法提提供供了了数组元素复制功能:数组元素复制功能:(ex2_2)/源数组源数组 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);总结一维数组的声明和初始化数组元素的引用二维数组的声明和使用数组拷贝