《数组与枚举》PPT课件.ppt

上传人:小飞机 文档编号:5520182 上传时间:2023-07-18 格式:PPT 页数:33 大小:1.05MB
返回 下载 相关 举报
《数组与枚举》PPT课件.ppt_第1页
第1页 / 共33页
《数组与枚举》PPT课件.ppt_第2页
第2页 / 共33页
《数组与枚举》PPT课件.ppt_第3页
第3页 / 共33页
《数组与枚举》PPT课件.ppt_第4页
第4页 / 共33页
《数组与枚举》PPT课件.ppt_第5页
第5页 / 共33页
点击查看更多>>
资源描述

《《数组与枚举》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《数组与枚举》PPT课件.ppt(33页珍藏版)》请在三一办公上搜索。

1、第7章 数组与枚举,数组属于引用型变量,创建数组需要经过声明数组和为数组分配变量2个步骤,7.1 创建数组,声明一维数组有下列两种格式:数组的元素类型 数组名;数组的元素类型 数组名;声明二维数组有下列两种格式:数组的元素类型 数组名;数组的元素类型 数组名;,7.1.1 声明数组,注意:与C/C+不同,Java不允许在声明数组中的方括号内指定数组元素的个数,如不许 int a12,为数组分配元素的格式如下:数组名=new 数组元素的类型数组元素的个数;如float boy;boy=new float4;声明数组和创建数组可以一起完成,如:float boy=new float4;,7.1.2

2、 为数组分配元素,二维数组的创建:int mytwo;mytwo=new int34;注意:构成二维数组的一维数组不必有相同的长度如:int a=new int3;a0=new int6;a1=new int12;a2=new int8;,一维数组通过索引符访问自己的元素需要注意的是索引从0开始二维数组也通过索引符访问自己的元素,7.1.3 数组元素的使用,数组的元素的个数称作数组的长度。对于一维数组,“数组名.length”的值就是数组中元素的个数;对于二维数组“数组名.length”的值是它含有的一维数组的个数float a=new float12;int b=new int36;a.le

3、ngth为12b.length为3,7.1.4 length的使用,创建数组后,系统会给数组的每个元素一个默认的值,如,float型是0.0在声明数组的同时也可以给数组的元素一个初始值如float boy=21.3f,23.5f,1.2f,29.3f 也可以直接用若干个一维数组初始化一个二维数组,这些一维数组的长度不尽相同int a=1,1,1,1,2,1,1,3,3,1,7.1.5 数组的初始化,数组属于引用型变量,因此两个相同类型的数组如果具有相同的引用,它们就有完全相同的元素如果使用了下列赋值语句(a和b的类型必须相同):a=b;那么,a中存放的引用和b的相同,这时系统将释放最初分配给数

4、组a的元素,使得a的元素和b的元素相同说明:和类对象的赋值原理一样,7.1.6 数组的引用,例7-1,public class Example7_1 public static void main(String args)int a=1,2,3,4;int b=100,200,300;(数组a的元素个数=+a.length);(数组b的元素个数=+b.length);(数组a的引用=+a);(数组b的引用=+b);System.out.println(a=b的结果是+(a=b);a=b;(数组a的元素个数=+a.length);(数组b的元素个数=+b.length);System.out.p

5、rintln(a=b的结果是+(a=b);System.out.println(a0=+a0+,a1=+a1+,a2=+a2);System.out.print(b0=+a0+,b1=+b1+,b2=+b2);,7.2.1 基于循环语句的遍历JDK1.5中新增的for循环结构,该结构适合于数组类型for(声明循环变量:数组的名字),7.2 遍历数组,例7-2,public class Example7_2 public static void main(String args)int a=1,2,3,4;char b=a,b,c,d;for(int n=0;na.length;n+)/传统方式

6、 System.out.println(an);for(int n=0;nb.length;n+)/传统方式 System.out.println(bn);for(int i:a)/循环变量i依次取数组a的每一个元素的值(非传统方式)System.out.println(i);for(char ch:b)/循环变量ch依次取数组b的每一个元素的值(非传统方式)System.out.println(ch);,注意,for(声明循环变量:数组的名字)中的“声明循环变量”必须是变量声明,不可以使用已经声明过的变量。,让Arrays类调用public static String toString(in

7、t a)方法,可以得到参数指定的一维数组a的如下格式的字符串表示:a0,a1 aa.length-1,7.2.2 使用toString()方法遍历数组,如果两个类型相同的数组具有相同的引用,那么它们就有完全相同的元素如果想把一个数组的元素中的值复制到另个一个数组中的元素中,后者元素值的改变不会影响到原数组元素的值,反之也是如此,如果想实现这样的目的,显然不能使用数组之间进行引用赋值的方式,7.3 复制数组,System类调用方法public static void arraycopy(sourceArray,int index1,copyArray,int index2,int length)

8、可以将数组sourceArray从索引index1开始后的length个元素中的数据复制到数组copyArray中,即将数组sourceArray中索引值从index1到index1+length-1元素中的数据复制到数组copyArray的某些元素中;接收数据的copyArray数组从第index2元素开始存放这些数据。如果接收数据的数组copyArray不能存放下待复制的数据,程序运行将发生异常,7.3.1 arraycopy方法,例7-3,import;public class Example7_3 public static void main(String args)char a=A

9、,B,C,D,E,F,b=1,2,3,4,5,6;int c=-1,-2,-3,-4,-5,-6,d=10,20,30,40,50,60;System.arraycopy(a,0,b,0,a.length);System.arraycopy(c,2,d,2,c.length-3);(数组 a 的各个元素中的值:);System.out.println(Arrays.toString(a);(数组 b 的各个元素中的值:);System.out.println(Arrays.toString(b);(数组 c 的各个元素中的值:);System.out.println(Arrays.toStri

10、ng(c);(数组 d 的各个元素中的值:);System.out.println(Arrays.toString(d);,Arrays类调用public static double copyOf(double original,int newLength)方法可以把参数original指定的数组中从索引0开始的newLength个元素复制到一个新数组中,并返回这个新数组,且该新数组的长度为newLength,如果newLength的值大于original的长度,copyOf方法返回的新数组的第newLength索引后的元素取默认值。类似的方法还有:public static float co

11、pyOf(float original,int newLength)public static int copyOf(int original,int newLength)public static char copyOf(char original,int newLength),7.3.2 copyOf和copyOfRange()方法,例如,int a=100,200,300,400;int b=Arrays.copyOf(a,5);b0=100,b1=200,b2=300,b3=400,b4=0,copyOfRange,可以把数组中部分元素的值复制到另一个数组中,使用copyOfRange

12、方法public static double copyOfRange(double original,ing from,int to)复制从from 开始至to-1如:int a=100,200,300,400,500,600;int b=Arrays.copyOfRange(a,2,5);b0=300,b1=400,b2=500,例7-4,import java.util.*;public class Example7_4 public static void main(String args)int a=11,22,33,44,55,b,c,d;b=Arrays.copyOf(a,8);(

13、数组 a 的各个元素中的值:);System.out.println(Arrays.toString(a);(数组 b 的各个元素中的值:);System.out.println(Arrays.toString(b);c=Arrays.copyOfRange(a,3,5);(数组 c 的各个元素中的值:);System.out.println(Arrays.toString(c);d=Arrays.copyOfRange(a,1,7);(数组 d 的各个元素中的值:);System.out.println(Arrays.toString(d);,可以使用循环语句对数组的排序,也可以使用循环语句

14、查找某个数据是否在一个排序的数组中。Arrays类调用相应的方法可以实现对数组的快速排序,比如,Array类调用public static void sort(double a)方法可以把参数a指定的double类型数组按升序排序。,7.4 排序与二分查找,Array类调用public static void sort(double a,int start,int end)方法可以把参数a指定的double类型数组中索引star至end-1的元素的值按升序排序。,public static int binarySearch(double a,double number)方法判断参数number

15、指定的数值是否在参数a指定的数组中,即number是否和数组a的某个元素的值相同,其中数组a必须是事先已排序的数组。如果number和数组a中某个元素的值相同,int binarySearch(double a,double number)方法返回(得到)该元素的索引,否则返回一个负数。,Array类调用(二分法),例7-5,import java.util.*;public class Example7_5 public static void main(String args)Scanner scanner=new Scanner(System.in);int a=12,34,9,23,4

16、5,6,45,90,123,19,34;Arrays.sort(a);System.out.println(Arrays.toString(a);(输入整数,程序判断该整数是否在数组中:);while(scanner.hasNextInt()int number=scanner.nextInt();int index=Arrays.binarySearch(a,number);if(index=0)System.out.println(number+和数组中索引为+index+的元素值相同);else System.out.println(number+不与数组中任何元素值相同);(是否继续输

17、入整数?输入任何非整数即可结束);,说明:,Scanner类中nextInt()方法用于从键盘输入一个整数hasNextInt()用于判断输入的是否是整数,若是,则返回值为true,若不是,返回值为false,7.5.1 枚举类型的定义枚举类型的定义包括枚举声明和枚举体,语法格式如下:enum 枚举名 常量列表枚举体中的内容是用逗号分隔的字符序列,称为枚举类型的常量。enum Season spring,summer,autumn,winter,7.5 枚举,声明了一个枚举类型后,就可以用该枚举类型的枚举名声明一个枚举变量,例如:Season x;声明了一个枚举变量x。枚举变量x只能取值枚举类

18、型中的常量。通过使用枚举名和“.”运算符获得枚举类型中的常量,例如:x=Season.spring;,7.5.2 枚举变量,Weekday.javapublic enum Weekday 星期一,星期二,星期三,星期四,星期五,星期六,星期日Example7_6.javapublic class Example7_6 public static void main(String args)Weekday x=Weekday.星期日;if(x=Weekday.星期日)System.out.println(x);(今天我休息);,1使用for语句遍历枚举常量枚举类型可以用如下形式返回一个一维数组:

19、枚举类型的名字.values();该一维数组元素的值和该枚举类型中常量依次相对应Weekday a=Weekday.values();a0至a6的值依次是:星期一,星期二,星期日,7.5.3 枚举类型与for语句和switch语句,例7-7,enum Color 红,黄,绿public class Example7_7 public static void main(String args)for(Color a:Color.values()for(Color b:Color.values()if(a!=b)System.out.print(a+,+b+|);,2switch语句中使用枚举常量

20、,JDK1.5后的版本允许switch语句中表达式的值是枚举类型的常量,enum Fruit 苹果,梨,香蕉,西瓜,芒果public class Example7_8 public static void main(String args)double price=0;boolean show=false;for(Fruit fruit:Fruit.values()switch(fruit)case 苹果:price=1.5;show=true;break;case 芒果:price=6.8;show=true;break;case 香蕉:price=2.8;show=true;break;default:show=false;if(show)System.out.println(fruit+500克的价格:+price+元);,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号