Java数组与枚举.ppt

上传人:wuy****n92 文档编号:70792108 上传时间:2023-01-28 格式:PPT 页数:21 大小:237.50KB
返回 下载 相关 举报
Java数组与枚举.ppt_第1页
第1页 / 共21页
Java数组与枚举.ppt_第2页
第2页 / 共21页
点击查看更多>>
资源描述

《Java数组与枚举.ppt》由会员分享,可在线阅读,更多相关《Java数组与枚举.ppt(21页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、Java 基础培训第4章 数组与枚举4.1 一维数组-一维数组的定义一维数组的定义格式有如下两种。方式1:;方式2:;其中:可以是Java中任意的数据类型,为用户自定义的一个合法的变量名,指明该变量是一个数组类型变量。Java在定义数组时并不为数组元素分配内存,仅为分配一个引用变量的空间。例如下面的语句:int a;String person;int b100;/错误,声明数组时不能指定其长度4.1 一维数组-创建一维数组对象和创建其他Java对象一样,同样使用new关键字创建一维数组对象,格式为:数组名=new 元素类型 元素个数;例如下面的语句:int array=new int100;/

2、创建一个int型数组,存放100个int类型的数据JVM首先在堆区中为数组分配内存空间,如图4.1所示,创建了一个包含100个元素的int型数组,数组成员都是int类型,占4个字节,因此整个数组对象在堆区中占用400个字节。之后,就要给每个数组成员赋予其数据类型的默认值,int型的默认值是0。图4.1 一维数组的内存布局4.1 一维数组-一维数组初始化定义数组的同时也可对数组元素进行显式初始化,有动态初始化和静态初始化。静态初始化指的是在定义数组的同时就为数组元素分配空间并赋值,它的格式如下。=,;或者 =,;Java编译程序会自动根据个数算出整个数组的长度,并分配相应的空间,例如下面的语句:

3、int Array=1,2,3,4;4.1 一维数组-一维数组初始化一个简单的类class Point int x,y;Point(int a,int b)x=a;y=b;4.1 一维数组-一维数组初始化数组成员是引用类型的也可静态初始化,如图4.2所示。Point pa=new Point(1,4),new Point(3,9),new Point(15,18);图4.2 引用类型数组的内存布局4.1 一维数组-一维数组初始化动态初始化指的是数组定义与为数组分配空间和赋值的操作分开进行,例如下面的语句:int a =new int3;a0=1;a1=5;a2=9;同样,数组成员是引用类型的也

4、可动态初始化,例如下面的语句:Point pa=new Point3;pa0=new Point(1,4);pa1=new Point(3,9);pa2=new Point(15,18);或采用匿名数组写法 Point pa=new Point(1,4),new Point(3,9),new Point(15,18);4.2 多维数组-二维数组的定义二维数组的定义格式如下。格式1:;格式2:;与一维数组的情形相类似,定义二维数组时不需要给出数组大小。int a;String names;int b100100;/错误,声明数组时不能指定其长度4.2 多维数组-创建二维数组对象创建二维数组同样使

5、用new关键字,格式如下。数组名=new 数组元素类型 数组元素个数 数组元素个数;例如下面的语句:int a=new int2 3;/创建一个int型的二维数组4.2 多维数组-二维数组的初始化和一维数组一样,若没有对二维数组成员进行显式初始化,则会进行隐式初始化,会根据创建的数组类型初始化对象,内存布局如图4.4所示。图4.4 二维数组的内存布局4.2 多维数组-二维数组的定义和一维数组一样,定义二维数组的同时也可对数组成员进行显式初始化,有动态初始化和静态初始化。在下面的语句中,定义String类型数组s的同时初始化数组成员,即静态初始化。String s=a,b,c,d,e,f,g,h

6、,i;注意:无论初始化一维数组还是二维数组,都不能指定其长度。例如下面的语句是错误的:String43 s=a,b,c,d,e,f,g,h,i;二维数组的第二维的长度可以各不相同,例如下面的语句:String s=a,b,c,d,e,f,g,h,i,j,k;4.2 多维数组-二维数组的静态初始化二维数组成员是引用类型的,也可静态初始化。下面的代码片段内存布局如图4.5所示。Point pt=new Point(1,2),new Point(3,4),new Point(5,6),new Point(7,8),new Point(9,10),new Point(11,12);图4.5 二维数组引

7、用类型的内存布局 4.2 多维数组-二维数组的动态初始化方式1:=new;例如,int arr=new int35;方式2:从高维向低维依次进行空间分配,此时分配的数组空间可以是任意的形状。(1)由于二维数组首先是一个一维数组,故先对该一维数组进行空间分配,也就是说,先对最高维进行空间分配。=new;例如,int c=new int3;(2)每一个元素又是一个一维数组,故对每一个元素再用new语句进行空间分配,格式与一维数组相同。例如下面的语句:c0=new int4;c1=new int3;c2=new int5;4.2 多维数组-二维数组的动态初始化(3)若最终元素是引用类型,则还需对每一

8、个最终元素进行对象的空间分配。例如下面的语句:Point p;/定义一个二维数组的引用变量p=new Point3;/先作为一维数组,进行最高维空间的分配p0=new Point2;/每一个元素又是一个一维数组,再进行一维数组空间分配p1=new Point1;p2=new Point2;p00=new Point(1,1);p01=new Point(2,2);/最后对每一个元素进行Point对象空间的分配p10=new Point(3,3);p20=new Point(4,4);p21=new Point(5,5);4.3 访问数组数组中的每个元素都有一个索引,或者称为下标。数组中的第一个

9、元素的索引为0,第二个元素的索引为1,依次类推。数组的length属性表示数组的长度,它的声明形式如下。public final int length;length属性被public和final修饰,因此在程序中可以读取数组的长度,但不能修改数组的长度。4.4 数组实用类-复制数组java.lang.System类提供了一个很有用的静态方法arraycopy()用来复制数组,其语法格式如下。static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length)功能:从指定源数组中复制一个数组,复制从指定的位

10、置开始,复制到目标数组的指定位置。从 src引用的源数组到dest引用的目标数组,数组组件的一个子序列被复制下来。被复制的组件的数量等于 length 参数。源数组中位置在 srcPossrcPos+length-1之间的组件被分别复制到目标数组中的destPosdestPos+length-1位置。4.4数组实用类-数组排序与查找使用内置的排序方法,就可以对任意基本类型数组排序,也可以对任意的对象数组进行排序,只要该对象实现了Comparable接口或具有相关联的Comparator。当然,可以对数组按指定的排序方法进行排序。如果数组已经排好序了,就可以使用Arrays.binarySear

11、ch()执行快速查找。4.5 枚举JDK5.0引入了一个新的关键字enum表示枚举类型。定义一个枚举类型很简单,下面是一个枚举类型的示例。public enum Season SPRING,SUMMER,AUTUMN,WINTER;上面创建了一个名为Season的枚举类型,它具有4个成员。由于枚举类型的实例是常量,因此按照命名习惯它们都用大写字母表示。为了使用enum,需要创建一个该类型的引用,将其赋值给某个实例。例如下面的语句:Season season=Season.SUMMER;在创建一个enum的实例后,编译器会自动创建一些有用的方法。ordinal()方法用来表示某个特定enum常量

12、的声明顺序,values()方法用来按照enum常量的声明顺序,产生由这些常量值构成的数组。例如下面的代码:for(Season season:Season.values()System.out.println(season+,ordinal+season.ordinal();输出:SPRING,ordinal 0SUMMER,ordinal 1AUTUMN,ordinal 2WINTER,ordinal 3定义枚举类型本质上就是在定义一个final类型的class,该类从java.lang.Enum类继承。这些工作由编译器来完成,所以enum像类一样可以具有自己的成员方法、数据成员、自己的构造方法、自己的初始化代码块,以及内部类。4.5 枚举4.6 enum的构造方法使用enum定义枚举类型时,实质上定义出来的类继承自 java.lang.Enum 类,而每个枚举的成员其实就是定义的枚举类型的一个实例。在定义一个枚举类型时,像定义类一样,可以定义枚举类型的构造方法,这样在定义枚举类型的成员变量时,利用构造方法进行初始化。在定义枚举类型时,必须将枚举常量定义在最前面,并以分号“;”与其他成员隔开。若enum是public类型,且在类外部定义,则文件名必须与enum名字相同,且文件中不能再定义其他public类型的类。本章结束

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁