您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > JavaSE05_数组
本课学习目标1一维数组的声明和初始化2数组元素的引用3多维数组4数组拷贝5数组排序3JavaSEJavaSE应用程序设计应用程序设计新科海学校新科海学校数组概述数组是多个相同类型数据的组合,实现对这些数据的统一管理数组属引用类型,数组型数据是对象(object),数组中的每个元素相当于该对象的成员变量数组中的元素可以是任何数据类型,包括基本类型和引用类型4JavaSEJavaSE应用程序设计应用程序设计新科海学校新科海学校声明数组类型变量一维数组声明的语法格式举例:Java语言中声明数组类型的变量时不允许指定数组的长度(数组中元素的个数)。类型var[];或类型[]var;int[]a;doubled[];String[]args;Personp[];int[3]a;//非法5JavaSEJavaSE应用程序设计应用程序设计新科海学校新科海学校创建并使用数组(1)创建数组对象语法格式:基本类型元素组成的一维数组(1)new元素类型[数组长度]publicclassTest{publicstaticvoidmain(Stringargs[]){int[]s;s=newint[10];for(inti=0;i10;i++){s[i]=2*i+1;System.out.println(s[i]);}}}main栈内存堆内存处内存状态s6JavaSEJavaSE应用程序设计应用程序设计新科海学校新科海学校创建并使用数组(2)基本类型元素组成的一维数组(2)publicclassTest{publicstaticvoidmain(Stringargs[]){int[]s;s=newint[10];for(inti=0;i10;i++){s[i]=2*i+1;System.out.println(s[i]);}}}栈内存堆内存处内存状态mains0int[]对象0000000007JavaSEJavaSE应用程序设计应用程序设计新科海学校新科海学校创建并使用数组(3)基本类型元素组成的一维数组(3)publicclassTest{publicstaticvoidmain(Stringargs[]){int[]s;s=newint[10];for(inti=0;i10;i++){s[i]=2*i+1;System.out.println(s[i]);}}}栈内存堆内存处内存状态mainsint[]对象1357911131517198JavaSEJavaSE应用程序设计应用程序设计新科海学校新科海学校创建并使用数组(4)引用类型元素组成的一维数组(1)publicclassMyDate{privateintday;privateintmonth;privateintyear;publicMyDate(intd,intm,inty){day=d;month=m;year=y;}publicvoiddisplay(){System.out.println(day+-+month+-+year);}}9JavaSEJavaSE应用程序设计应用程序设计新科海学校新科海学校创建并使用数组(5)引用类型元素组成的一维数组(2)publicclassTest{publicstaticvoidmain(Stringargs[]){MyDate[]m;m=newMyDate[10];for(inti=0;i10;i++){m[i]=newMyDate(i+1,i+1,1990+i);m[i].display();}}}栈内存堆内存处内存状态mainm10JavaSEJavaSE应用程序设计应用程序设计新科海学校新科海学校创建并使用数组(6)引用类型元素组成的一维数组(3)publicclassTest{publicstaticvoidmain(Stringargs[]){MyDate[]m;m=newMyDate[10];for(inti=0;i10;i++){m[i]=newMyDate(i+1,i+1,1990+i);m[i].display();}}}栈内存堆内存处内存状态mainmnullMyDate[]对象nullnullnullnullnullnullnullnullnull11JavaSEJavaSE应用程序设计应用程序设计新科海学校新科海学校创建并使用数组(7)引用类型元素组成的一维数组(3)publicclassTest{publicstaticvoidmain(Stringargs[]){MyDate[]m;m=newMyDate[10];for(inti=0;i10;i++){m[i]=newMyDate(i+1,i+1,1990+i);m[i].display();}}}栈内存堆内存For循环执行三次后内存状态mainm***MyDate[]******nullnullnullnullnullnullnull111990221991331992MyDate12JavaSEJavaSE应用程序设计应用程序设计新科海学校新科海学校数组元素缺省初始化数组是引用类型,它的元素相当于类的成员变量,因此数组对象一经创建,其中的每个元素也被按照成员变量同样的方式被隐式初始化。例如:publicclassTest{publicstaticvoidmain(Stringargv[]){inta[]=newint[5];System.out.println(a[3]);}}13JavaSEJavaSE应用程序设计应用程序设计新科海学校新科海学校数组初始化(1)动态初始化数组定义、创建对象以及为数组元素赋值等操作分开进行。inta[];a=newint[3];a[0]=3;a[1]=9;a[2]=8;MyDatedates[];dates=newMyDate[3];dates[0]=newMyDate(22,7,1964);dates[1]=newMyDate(1,1,2000);dates[2]=newMyDate(22,12,1964);14JavaSEJavaSE应用程序设计应用程序设计新科海学校新科海学校数组初始化(2)静态初始化在定义数组的同时就为数组元素分配空间并赋值。int[]a={3,9,8};MyDatedates[]={newMyDate(22,7,1964),newMyDate(1,1,2000),newMyDate(22,12,1964)};15JavaSEJavaSE应用程序设计应用程序设计新科海学校新科海学校数组元素的引用创建数组对象后才可以引用数组中的元素,格式:其中,元素下标应为整型表达式。如a[3],b[i],c[6*i]。数组元素下标从0开始;长度为n的数组合法下标取值范围:0~n-1;Java数组对象一经创建,其长度不可改变,如果越界访问数组元素(即元素下标超过零至数组长度-1的范围)时将出现运行错误。此外,数组对象拥有一个由系统自动提供的特殊属性length,用于以只读的方式给出数组的长度。数组名[元素下标]int[]a=newint[3];System.out.println(a.length);输出结果:316JavaSEJavaSE应用程序设计应用程序设计新科海学校新科海学校编写一应用程序实现下述功能:创建一基本数据类型元素组成的数组并输出各数组元素的值。编写一应用程序练习数组对象的两种初始化方式,并输出各元素的值。编写程序,练习使用数组类型对象的length属性,测试并体会数组元素的默认初始化机制;17JavaSEJavaSE应用程序设计应用程序设计新科海学校新科海学校多维数组多维数组可以理解为由若干个低维数组所组成的数组。二维数组举例:inta[][]={{1,2},{3,4,0,9},{5,6,7}};ijj=0j=1j=2j=3i=012i=13409i=256718JavaSEJavaSE应用程序设计应用程序设计新科海学校新科海学校多维数组特性Java中多维数组的声明和初始化应按从高维到低维的顺序进行。Java中多维数组不必须是规则矩阵形式。举例:int[][]a=newint[3][4];int[][]t=newint[3][];t[0]=newint[4];t[1]=newint[2];int[][]b=newint[][4];//非法19JavaSEJavaSE应用程序设计应用程序设计新科海学校新科海学校多维数组初始化静态初始化动态初始化inta[][]={{1,2},{2,3},{3,4,5}};intb[3][2]={{1,2},{2,3},{4,5}};//非法int[][]a=newint[3][];a[0]=newint[2];a[1]=newint[4];a[2]=newint[3];a[0][0]=45;a[0][1]=87;……a[2][2]=99;20JavaSEJavaSE应用程序设计应用程序设计新科海学校新科海学校编写一应用程序实现下述功能:创建一基本数据类型元素组成的二维数组,依次并输出各数组元素的值。例如:……inta[][]={{1,2},{2,3,4,5},{5,6,7}};for(inti=0;ia.length;i++){for(intj=0;ja[i].length;j++){System.out.println(a[i][j]);}}21JavaSEJavaSE应用程序设计应用程序设计新科海学校新科海学校数组拷贝java.lang.System类的arraycopy()方法提供了数组元素复制功能——将一个数组的连续多个元素的值批量复制到另一个数组中。//源数组intsource[]={1,2,3,4,5,6};//目的数组intdest[]={10,9,8,7,6,5,4,3,2,1};//复制源数组中从下标0开始的3个元素到的数组,//从下标0的位置开始存储。System.arraycopy(source,0,dest,0,3);拷贝后目标数组中各元素值?22JavaSEJavaSE应用程序设计应用程序设计新科海学校新科海学校数组排序JDK的java.util包中定义的Arrays类提供了多种数组排序的功能。//创建样本数组int[]a={6,23,45,12,-83,94,41};//数组排序Arrays.sort(a);//排序后数组元素输出for(inti=0;ia.length;i++){System.out.p
本文标题:JavaSE05_数组
链接地址:https://www.777doc.com/doc-4810131 .html