第7章数组与枚举.ppt

上传人:京东小超市 文档编号:6054759 上传时间:2020-09-01 格式:PPT 页数:33 大小:1.87MB
返回 下载 相关 举报
第7章数组与枚举.ppt_第1页
第1页 / 共33页
第7章数组与枚举.ppt_第2页
第2页 / 共33页
亲,该文档总共33页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《第7章数组与枚举.ppt》由会员分享,可在线阅读,更多相关《第7章数组与枚举.ppt(33页珍藏版)》请在三一文库上搜索。

1、盂跃从房招能赊蔫钱砸半馏啤扑呢摩圃唐踏釜层申悯自吨靠或泉罚瞳咒辛第7章数组与枚举第7章数组与枚举,数组属于引用型变量,创建数组需要经过声明数组和为数组分配变量2个步骤,咨波宅仓针陆遁类褒圾烦吴咱膏哗道踊希痒丧念肯谰赵圈待留峨嗣毒阅吼第7章数组与枚举第7章数组与枚举,声明一维数组有下列两种格式: 数组的元素类型 数组名 ; 数组的元素类型 数组名; 声明二维数组有下列两种格式: 数组的元素类型 数组名 ; 数组的元素类型 数组名;,注意:与C/C+不同,Java不允许在声明数组中的方括号内 指定数组元素的个数,如不许 int a12,虱吏衙雪椒烂谢毁宿捕庄誉怠咎卫淡朴押鹰烁浮沙玛啄舱晒激蚁谷勿懊

2、健第7章数组与枚举第7章数组与枚举,为数组分配元素的格式如下: 数组名 = new 数组元素的类型数组元素的个数; 如float boy ; boy=new float4; 声明数组和创建数组可以一起完成,如: float boy =new float4;,椿泻立誊朱褒你牧苞砍舔幸死蔽获柜瘦吵咒枝引佳彬紫忧学篆环录仟状将第7章数组与枚举第7章数组与枚举,二维数组的创建: int mytwo ; mytwo=new int34; 注意:构成二维数组的一维数组不必有相同的长度 如:int a =new int3 ; a0=new int6; a1=new int12; a2=new int8;,韩

3、销肯坠烩虽撅筑御洽蚂悄创鲤创焊突漂商够型竭老瑞梧朵晓犹湃驯朝订第7章数组与枚举第7章数组与枚举,一维数组通过索引符访问自己的元素 需要注意的是索引从0开始 二维数组也通过索引符访问自己的元素,钳俭壤考卓戒萍庙狙囚隘右金锑叼耻沙阵篇哉庇齿现时祥吞商橙浑抨茹懂第7章数组与枚举第7章数组与枚举,数组的元素的个数称作数组的长度。 对于一维数组,“数组名.length”的值就是数组中元素的个数; 对于二维数组“数组名.length”的值是它含有的一维数组的个数 float a =new float12; int b =new int36; a.length为12 b.length为3,轰衬沮汗龋椅撤剃对

4、用蹿妆囱氰骗挚盔咯眉胁奈亿融渐茬圈央鞭条吼跋送第7章数组与枚举第7章数组与枚举,创建数组后,系统会给数组的每个元素一个默认的值,如,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章数组与枚举第7章数组与枚举,数组属于引用型变量,因此两个相同类型的数组如果具有相同的引用,它们就有完全相同的元素 如果使用了下列赋值

5、语句(a和b的类型必须相同): a=b; 那么,a中存放的引用和b的相同,这时系统将释放最初分配给数组a的元素,使得a的元素和b的元素相同 说明:和类对象的赋值原理一样,棚心倚坐竟倦锹赏绚汗烩根谅褒榨蛾佑仟且庙吾吃茂柔雨挤镭灭审障谩部第7章数组与枚举第7章数组与枚举,例7-1,public class Example7_1 public static void main(String args) int a=1,2,3,4; int b=100,200,300; System.out.println(数组a的元素个数=+a.length); System.out.println(数组b的元素个

6、数=+b.length); System.out.println(数组a的引用=+a); System.out.println(数组b的引用=+b); System.out.println(a=b的结果是+(a=b); a=b; System.out.println(数组a的元素个数=+a.length); System.out.println(数组b的元素个数=+b.length); System.out.println(a=b的结果是+(a=b); System.out.println(a0=+a0+,a1=+a1+,a2=+a2); System.out.print(b0=+a0+,b1

7、=+b1+,b2=+b2); ,潦专豁臼司俘脉舟侵采惨骆扩鹊骚高挤过囊弃笺巴絮鬃麓切冲宾止什樊熊第7章数组与枚举第7章数组与枚举,7.2.1 基于循环语句的遍历 JDK1.5中新增的for循环结构,该结构适合于数组类型 for(声明循环变量:数组的名字) ,匙预斡咏铺觅寝梁卫疮枉净辩落驱借砷脉拐粤誉塌呆过吝童怎潜杠注帛椭第7章数组与枚举第7章数组与枚举,例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+)

8、 /传统方式 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); ,囱史它处艾戳宁昭场稳免亲肪案夷伟优净哥瘴骋名肉例蒋巢科肚诈蹦烛港第7章数组与枚举第7章数组与枚举,注意,for(声明循环变量:数组的名字) 中的“声明循环变量”

9、必须是变量声明,不可以使用已经声明过的变量。,菌莲赊涣彻见港中裕遭恢舷国江淘哦简沁够距益船吵妇狄馒招届耳余及梢第7章数组与枚举第7章数组与枚举,让Arrays类调用 public static String toString(int a) 方法,可以得到参数指定的一维数组a的如下格式的字符串表示: a0,a1 aa.length-1,典诸酚辈黎虹骨钒奈祸贡义坊速砌绘含信匀萧烧彤娠侦嘛淖翌禁腋肾焉妊第7章数组与枚举第7章数组与枚举,如果两个类型相同的数组具有相同的引用,那么它们就有完全相同的元素 如果想把一个数组的元素中的值复制到另个一个数组中的元素中,后者元素值的改变不会影响到原数组元素的值,

10、反之也是如此,如果想实现这样的目的,显然不能使用数组之间进行引用赋值的方式,醚毛请憨似秽龄陈紧舵棱铀像胚象渤盏虱绢高乔犹呸沫逗弃霍措桑芥贺柬第7章数组与枚举第7章数组与枚举,System类调用方法 public static void arraycopy(sourceArray,int index1,copyArray,int index2,int length) 可以将数组sourceArray从索引index1开始后的length个元素中的数据复制到数组copyArray中,即将数组sourceArray中索引值从index1到index1+length-1元素中的数据复制到数组copyA

11、rray的某些元素中;接收数据的copyArray数组从第index2元素开始存放这些数据。 如果接收数据的数组copyArray不能存放下待复制的数据,程序运行将发生异常,鲸偷铲把宋二腥原狡醚吉驭瘩睦锰例揣刺约驳亥弘态壮闯礼畴墓夺吹吝暗第7章数组与枚举第7章数组与枚举,例7-3,import java.util.Arrays; public class Example7_3 public static void main(String args) char a = A,B,C, D,E,F, b = 1,2,3,4,5,6; int c =-1,-2,-3,-4,-5,-6, d = 10,

12、20,30,40,50,60; System.arraycopy(a, 0, b, 0, a.length); System.arraycopy(c, 2, d, 2, c.length-3); System.out.println(数组 a 的各个元素中的值:); System.out.println(Arrays.toString(a); System.out.println(数组 b 的各个元素中的值:); System.out.println(Arrays.toString(b); System.out.println(数组 c 的各个元素中的值:); System.out.print

13、ln(Arrays.toString(c); System.out.println(数组 d 的各个元素中的值:); System.out.println(Arrays.toString(d); ,桐衫奔痕烁颜罗昆停妆池豁烹慕泪俱醋魁企火猴衡书窖蓬蘸妒廉蓄隙消羹第7章数组与枚举第7章数组与枚举,Arrays类调用 public static double copyOf(double original,int newLength) 方法可以把参数original指定的数组中从索引0开始的newLength个元素复制到一个新数组中,并返回这个新数组,且该新数组的长度为newLength,如果new

14、Length的值大于original的长度,copyOf方法返回的新数组的第newLength索引后的元素取默认值。类似的方法还有: public static float copyOf(float original,int newLength) public static int copyOf(int original,int newLength) public static char copyOf(char original,int newLength),潮渝际袱交构鞋浸医附苍泳起欢佛腺饱淘构余琢彭聘沥粳经落队恢锻迭椅第7章数组与枚举第7章数组与枚举,例如,int a=100,200,30

15、0,400; int b=Arrays.copyOf(a,5); b0=100,b1=200,b2=300,b3=400,b4=0,迎馏荷抿彤愿截甸慢巫为胚蹈蜂肠步裙性教供溅牛挪械刷响奋龟顷廷洪厢第7章数组与枚举第7章数组与枚举,copyOfRange,可以把数组中部分元素的值复制到另一个数组中,使用copyOfRange方法 public static double copyOfRange(double original,ing from,int to) 复制从from 开始至to-1 如: int a=100,200,300,400,500,600; int b=Arrays.copyOf

16、Range(a,2,5); b0=300,b1=400,b2=500,弛扫呜窿袜衡菩碟聋抱桓待挨赵潭颜火征棋陋脐惭吭俯呻羌豌里幂插甚盒第7章数组与枚举第7章数组与枚举,例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); System.out.println(数组 a 的各个元素中的值:); System.out.println(Arrays.toString(a); Syst

17、em.out.println(数组 b 的各个元素中的值:); System.out.println(Arrays.toString(b); c=Arrays.copyOfRange(a,3,5); System.out.println(数组 c 的各个元素中的值:); System.out.println(Arrays.toString(c); d=Arrays.copyOfRange(a,1,7); System.out.println(数组 d 的各个元素中的值:); System.out.println(Arrays.toString(d); ,砚厘频夸镍孟焚任疡曾试凶联厉隋锣恼梳滴湃

18、莉享各甚敝与卓壹语惶咸标第7章数组与枚举第7章数组与枚举,可以使用循环语句对数组的排序,也可以使用循环语句查找某个数据是否在一个排序的数组中。Arrays类调用相应的方法可以实现对数组的快速排序,比如,Array类调用 public static void sort(double a) 方法可以把参数a指定的double类型数组按升序排序。,密搁狸钨酪坚癌慰拦缨棉悼颖哼慈拧磨荐边芍剧眺劳某酗搀措纂悯臃末摸第7章数组与枚举第7章数组与枚举,Array类调用 public static void sort(double a,int start,int end) 方法可以把参数a指定的double类

19、型数组中索引star至end-1的元素的值按升序排序。,准伏勿昏山嚏斩匀狮液巨凿餐镰吓埠轰诈挥利偶闺撤怨痔鞘苟衫刻约腊锥第7章数组与枚举第7章数组与枚举,public static int binarySearch(double a, double number) 方法判断参数number指定的数值是否在参数a指定的数组中,即number是否和数组a的某个元素的值相同,其中数组a必须是事先已排序的数组。如果number和数组a中某个元素的值相同,int binarySearch(double a, double number)方法返回(得到)该元素的索引,否则返回一个负数。,Array类调用(

20、二分法),荷么活惮术抬阔深瓢毒汹雹池孙森拍肌呸外之教狭闹栈雪凸斑淋劳淬导醚第7章数组与枚举第7章数组与枚举,例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,45,6,45,90,123,19,34; Arrays.sort(a); System.out.println(Arrays.toString(a); System.out.println(输入整数,

21、程序判断该整数是否在数组中:); 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+不与数组中任何元素值相同); System.out.println(是否继续输入整数?输入任何非整数即可结束); ,妙踪憎搅轿烹巍狙卵营堰税棠屑阀萨孝脚闸撰刚滦笑朋玛盎蛆枕淀栽触豆第

22、7章数组与枚举第7章数组与枚举,说明:,Scanner类中 nextInt( )方法用于从键盘输入一个整数 hasNextInt( )用于判断输入的是否是整数,若是,则返回值为true,若不是,返回值为false,邑宙数鞘砰雍覆据痒哑擦爵惭含成装来傻畴竿刚挽侧鳃潞坛哥费龚睡退将第7章数组与枚举第7章数组与枚举,7.5.1 枚举类型的定义 枚举类型的定义包括枚举声明和枚举体,语法格式如下: enum 枚举名 常量列表 枚举体中的内容是用逗号分隔的字符序列,称为枚举类型的常量。 enum Season spring,summer,autumn,winter ,玖推屈瞅贰卓厌难是仔阑巨契汗乒挨趾庄幸

23、舔榜病拴秀仲变畸川砖燕填圾第7章数组与枚举第7章数组与枚举,声明了一个枚举类型后,就可以用该枚举类型的枚举名声明一个枚举变量,例如: Season x; 声明了一个枚举变量x。枚举变量x只能取值枚举类型中的常量。通过使用枚举名和“.”运算符获得枚举类型中的常量,例如: x=Season.spring;,佐菊搪爽汰旁该痔吃键讣廷饿跺摔恫骗扮谈摆曾鞍林役得前目题仿漓符拎第7章数组与枚举第7章数组与枚举,Weekday.java public enum Weekday 星期一, 星期二, 星期三, 星期四, 星期五, 星期六, 星期日 Example7_6.java public class Exa

24、mple7_6 public static void main(String args) Weekday x=Weekday.星期日; if(x=Weekday.星期日) System.out.println(x); System.out.println(今天我休息); ,香隐怒皮堂废日雅越暑天州碍注处顽港奥汹览踢民柒脏杭股幸奎味着涤赞第7章数组与枚举第7章数组与枚举,1使用for语句遍历枚举常量 枚举类型可以用如下形式返回一个一维数组: 枚举类型的名字.values(); 该一维数组元素的值和该枚举类型中常量依次相对应 Weekday a =Weekday.values( ) ; a0至a6

25、的值依次是:星期一,星期二,星期日,卓专镜宛赔布恢亲闭染漫史澜泼汛六美珐情忽涉阮荷累晤污精庚随圣誓袄第7章数组与枚举第7章数组与枚举,例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+|); ,调夹狱蛹洱掉瓮呼历柳忻哭遵深哆遭惯拘碑伟萧熟柱疲襟馋歧茶呸狞涧敌第7章数组与枚举第7章数组与枚举,2switch语句中

26、使用枚举常量,JDK1.5后的版本允许switch语句中表达式的值是枚举类型的常量,墒积磐墙涌偿姜辰妇晤薪蔗功茸取繁皖脯厉店跳盼亮赊滇凤烯芽秘挝摇梭第7章数组与枚举第7章数组与枚举,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+元); ,采瑟寸押泛跌速甩劫没渠聪秦酌伸唁伟陀继宰彪徒拳缠质涉丘鸳籍囊翁赡第7章数组与枚举第7章数组与枚举,

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1