Java程序设计-4-数组.ppt

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

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

1、第四章第四章 数组数组1学习目标学习目标理解数组的作用理解数组的作用掌握数组的声明和初始化特点掌握数组的声明和初始化特点能够通过下标访问数组中的单个元素能够通过下标访问数组中的单个元素如何利用如何利用JDKJDK提供的数组操作方法提供的数组操作方法理解程序接收参数的过程,灵活运用理解程序接收参数的过程,灵活运用mainmain的参的参数实现和程序交互数实现和程序交互掌握多维数组的声明和应用掌握多维数组的声明和应用234.1 4.1 数组数组 数组的作用在于提供了一种用来处理一组同类型数组的作用在于提供了一种用来处理一组同类型数据的存储和访问机制,因为在实际编程中,你数据的存储和访问机制,因为在

2、实际编程中,你无法为每一个这样的数据声明一个变量。无法为每一个这样的数据声明一个变量。在在JavaJava语言中,数组元素可以是基本类型,也可语言中,数组元素可以是基本类型,也可是对象。实际上,是对象。实际上,JavaJava认为数组本身也是一个对认为数组本身也是一个对象。象。44.1.1 4.1.1 数组的声明数组的声明传统方式传统方式uint score;uchar s ;uPoint p ,q;/Point/Point是一个类类型是一个类类型,此处声明了两个数组此处声明了两个数组现代方式现代方式uchar s;uPoint p,q;54.1.2 4.1.2 创建数组创建数组数组声明后并不

3、是就可以直接使用了,要想使用必须数组声明后并不是就可以直接使用了,要想使用必须要实际创建数组,为它分配实际的存储空间,然后才要实际创建数组,为它分配实际的存储空间,然后才能存储元素。能存储元素。us=new char 20;up=new Point 100;也可在也可在运行运行时,用变量表示数组的大小。时,用变量表示数组的大小。uint a;uint len=10;ua=new intlen;注意:数组的大小一旦指定,就不可更改。注意:数组的大小一旦指定,就不可更改。64.1.3 4.1.3 初始化数组初始化数组初始化解决了当数组空间被分配时,如何填充空间的问初始化解决了当数组空间被分配时,如

4、何填充空间的问题,而且预防了没有赋值就访问数组元素导致意外的情题,而且预防了没有赋值就访问数组元素导致意外的情况。况。1.1.当创建一个数组时,每个元素都将被默认初始化。当创建一个数组时,每个元素都将被默认初始化。u在上述在上述charchar数组数组s s的例子中,每个值都被初始化为的例子中,每个值都被初始化为0 0 (u0000-null)(u0000-null)字符;字符;u数值类型的数组元素默认值为数值类型的数组元素默认值为0 0ubooleanboolean类型的数组元素默认值为类型的数组元素默认值为falsefalseu对象类型的数组元素默认值为对象类型的数组元素默认值为nulln

5、ullu在数组在数组p p的例子中的例子中,每个值都被初始化为每个值都被初始化为nullnull,表明它还未引用一,表明它还未引用一个个PointPoint对象。在经过赋值对象。在经过赋值 p p 0 0 =new Point()=new Point()之后,数组的第之后,数组的第一个元素引用为实际一个元素引用为实际PointPoint对象。对象。72.Java2.Java编程语言允许使用下列形式快速创建数组编程语言允许使用下列形式快速创建数组,并完并完成初始化任务成初始化任务:uString names=String names=u “GeorgiannaGeorgianna”,u “Jen

6、Jen”,u “SimonSimon”u;其结果与下列代码等同:其结果与下列代码等同:uString names;String names;unames=new String names=new String 3 3;unames names 0 0 =“GeorgiannaGeorgianna”;unames names 1 1 =“JenJen”;unames names 2 2 =“SimonSimon”;84.1.4 4.1.4 访问数组访问数组public class ArrayAccessDemo public static void main(String args)int a=

7、1,3,7,2,6,5;for(int i=0;ia.length;i+)System.out.println(第+i+个元素值为+ai);94.1.4 4.1.4 访问数组访问数组cont.cont.注意:注意:u1.1.在在JavaJava编程语言中,所有数组的下标都从编程语言中,所有数组的下标都从0 0开开始。访问数组元素可以通过下标进行,如始。访问数组元素可以通过下标进行,如a5a5或或者者aiai.u2.2.一个数组中元素的数量被作为具有一个数组中元素的数量被作为具有lengthlength属性属性的部分而被数组对象存储的部分而被数组对象存储;这个值被用来检查所这个值被用来检查所有运

8、行时访问的界限。如果发生了一个越出界限有运行时访问的界限。如果发生了一个越出界限的访问,那么运行时的报错(的访问,那么运行时的报错(异常异常)也就出现了)也就出现了.104.1.4 4.1.4 访问数组访问数组cont.cont.存储元素到数组存储元素到数组uint a=new int10;int a=new int10;ua0=10;a0=10;ua5=2;a5=2;ua7=8;a7=8;11小结:小结:数组就是一个具有固定长度的包容多个相同类型对象数组就是一个具有固定长度的包容多个相同类型对象的数据结构。它的元素类型甚至可以是数组。的数据结构。它的元素类型甚至可以是数组。数组的声明、创建和

9、初始化可以分别完成,也可以一数组的声明、创建和初始化可以分别完成,也可以一次完成。次完成。用来指示单个数组元素的下标必须总是从用来指示单个数组元素的下标必须总是从0 0开始。开始。数组一旦创建后,其大小不可调整。数组一旦创建后,其大小不可调整。可以用数组对象的可以用数组对象的lengthlength属性来获得该数组可以容纳属性来获得该数组可以容纳的元素个数。的元素个数。可以通过下标(整数数值或整型变量)来引用数组内可以通过下标(整数数值或整型变量)来引用数组内的指定位置的元素,下标不能超出数组元素个数。的指定位置的元素,下标不能超出数组元素个数。可使用相同的引用变量来引用一个全新的数组。可使用

10、相同的引用变量来引用一个全新的数组。12课堂练习课堂练习写出下面程序的运行结果写出下面程序的运行结果class Happy public static void main(String args)int index=1;int a=new int3;int bas=aindex;int baz=bas+index System.out.println(abaz);13课堂练习课堂练习(cont.)(cont.)判断正确判断正确u数组中的每个元素都是同样的类型数组中的每个元素都是同样的类型u数组的大小在声明之后就是固定的了数组的大小在声明之后就是固定的了u数组的大小在创建后确定数组的大小在创建后

11、确定u数组的元素必须是基本类型的数组的元素必须是基本类型的14课堂练习课堂练习(cont.)(cont.)下面哪一个语句是有效的数组声明?下面哪一个语句是有效的数组声明?uint i=new int(30);int i=new int(30);udouble d=new double30;double d=new double30;uPoint p=new Point(1.30);Point p=new Point(1.30);uint i=(3,4,5,7);int i=(3,4,5,7);uchar c=new char();char c=new char();ufloat f=1.0f,

12、1.5f,4.6f;float f=1.0f,1.5f,4.6f;udouble d=new float30;double d=new float30;15说出下面数组第说出下面数组第3 3个元素的值个元素的值uint a=1,3,6,7,8;int a=1,3,6,7,8;uboolean b=new boolean10;boolean b=new boolean10;ufloat f=1.4f,5.6f,7.0f,2.5f,3.6f;float f=1.4f,5.6f,7.0f,2.5f,3.6f;udouble d=new double10;double d=new double10;u

13、long l;long l;使用增强型循环访问数组元素使用增强型循环访问数组元素16 for(目标数组元素的类型目标数组元素的类型 变量名变量名:目标数组名目标数组名)int score=new int5;for(int x:score)System.out.print(x+,);4.2 main4.2 main方法中的参数方法中的参数命令行的参数命令行的参数umainmain方法声明中的参数类型是一个字符串数组方法声明中的参数类型是一个字符串数组u运行时,存放接收的命令行参数运行时,存放接收的命令行参数uJavaJava程序将接收的第一个参数存放在下标为程序将接收的第一个参数存放在下标为0

14、0的位置,第二个参数存放在下标为的位置,第二个参数存放在下标为1 1的位置,的位置,其它的以此类推。其它的以此类推。17/程序4-2:运行时参数的应用public class CommandParameters public static void main(String args)for(int i=0;iargs.length;i+)(第%d个输入的参数是%sn,i,argsi);184.3 4.3 多维数组多维数组1 1多维数组多维数组 uJavaJava编程语言没有像其它语言那样提供多维数编程语言没有像其它语言那样提供多维数组,因为一个数组可被声明为具有任何基础类组,因为一个数组可被声

15、明为具有任何基础类型,所以你可以创建数组的数组型,所以你可以创建数组的数组(和数组的数组和数组的数组的数组,等等的数组,等等)。uint twoDim=new int 4int twoDim=new int 4;utwoDim0=new int5;twoDim0=new int5;utwoDim1=new int5;twoDim1=new int5;utwoDim2=new int5;twoDim2=new int5;utwoDim3=new int5;twoDim3=new int5;上述数组的声明也可以修改为:上述数组的声明也可以修改为:uint twoDim=new int45;int

16、twoDim=new int45;192.2.不规则的多维数组不规则的多维数组 uint twoDim=new int4;int twoDim=new int4;utwoDim0=new int 2;twoDim0=new int 2;utwoDim1=new int 4;twoDim1=new int 4;utwoDim2=new int 6;twoDim2=new int 6;utwoDim3=new int 8;twoDim3=new int 8;203.3.一种非法的声明一种非法的声明u尽管多维数组的声明格式,允许方括号在变量名尽管多维数组的声明格式,允许方括号在变量名左边或者右边,但

17、此种灵活性不适用于数组句法左边或者右边,但此种灵活性不适用于数组句法的其它方面。例如的其它方面。例如:new int:new int 4 4 是非法的,因是非法的,因为这样的声明,编译器无法预先为之分配空间。为这样的声明,编译器无法预先为之分配空间。4.4.多维数组的初始化多维数组的初始化u类似一维数组的初始化,多维数组的初始化即可类似一维数组的初始化,多维数组的初始化即可以在声明时直接初始化,也可以在创建时初始化。以在声明时直接初始化,也可以在创建时初始化。下面的例子演示了在声明时直接对数组进行初始下面的例子演示了在声明时直接对数组进行初始化:化:uint factors=2,3,2,4,5

18、,int factors=2,3,2,4,5,2,3,6,7;2,3,6,7;21课堂练习课堂练习声明并创建一个如下数组。声明并创建一个如下数组。u包含包含3 3行,每行分别包含不同数目元素,元素行,每行分别包含不同数目元素,元素数依次为数依次为 5 5,4 4,6 6编写一个程序,逐个输出该数组的每个元素的编写一个程序,逐个输出该数组的每个元素的默认初始值。默认初始值。224.4 4.4 操作数组复制、排序和查找操作数组复制、排序和查找复制:在数组内查找一个具体的值,或者将一复制:在数组内查找一个具体的值,或者将一个数组复制到另一个数组等。个数组复制到另一个数组等。uSystemSystem

19、类提供的方法类提供的方法arraycopy()arraycopy(),程序程序排序和查找排序和查找ArraysArrays类提供的主要方法类提供的主要方法usort(.)sort(.)升序排列升序排列ubinarySearch(.)binarySearch(.)使用折半搜索算法来搜索指使用折半搜索算法来搜索指定类型的有序数组定类型的有序数组ufill(.)fill(.)用指定类型的值填充同类型的数组用指定类型的值填充同类型的数组u程序程序23public class ArrayCopy public static void main(String args)/原始数组 int myArray=

20、1,2,3,4,5,6;/一个更大的数组 int hold=10,9,8,7,6,5,4,3,2,1;/*复制myArray数组的所有内容到hold数组,*放在hold数组下标0开始的位置 */System.arraycopy(myArray,0,hold,0,myArray.length);24import java.util.Arrays;public class ArrayDemo public static void main(String args)int a=10,7,9,2,4,5,1,3,6,8;Arrays.sort(a);/对数组a升序排列 for(int element:

21、a)System.out.println(element);int loc=Arrays.binarySearch(a,5);/查找元素5 System.out.println(数值5在下标+loc+的位置);25课堂练习课堂练习声明一个整型数组,其初始值是:声明一个整型数组,其初始值是:1 1,4 4,5656,8 8,9 9;声明一个双精度类型的数组,其初始值是:声明一个双精度类型的数组,其初始值是:1.01.0,10.510.5,1212,7.27.2,20.420.4给出如下的声明给出如下的声明u float f=1,2,3,4,5;float f=1,2,3,4,5;u请问数组的长度

22、,以及有效索引范围各是多少?请问数组的长度,以及有效索引范围各是多少?u请问索引为请问索引为3 3的位置存放的元素值是多少?的位置存放的元素值是多少?声明一个字符型数组,包含声明一个字符型数组,包含2020个元素,并给其前个元素,并给其前2 2个元个元素赋值字符:素赋值字符:a a,b b声明一个字符串型数组,包含声明一个字符串型数组,包含1010个元素,并给其前个元素,并给其前2 2个个元素赋值字符串:元素赋值字符串:abcabc,bcdbcd声明并创建一个二维整型数组。包含声明并创建一个二维整型数组。包含3 3行,每行分别包行,每行分别包含不同数目元素,元素数依次为含不同数目元素,元素数依

23、次为 5 5,4 4,6 6public class ArrayTest public static void main(String args)int i,j;int a=2,1,4,8,9,5,3;for(i=0;i a.length-1;i+)int k=i;for(j=i;j a.length;j+)if(aj ak)k=j;int temp=ai;ai=ak;ak=temp;for(i=0;i a.length;i+)System.out.print(ai+);System.out.println();/分析程序执行过程按照要求运行下面的程序,回答问题。按照要求运行下面的程序,回答问

24、题。u请按照下面的运行命令运行,并写出运行结果。请按照下面的运行命令运行,并写出运行结果。uJava CommandParameter Alice Mike MaryJava CommandParameter Alice Mike Maryu你认为你认为argsargs数组的作用是什么?数组的作用是什么?u请写出运行时请写出运行时argsargs数组中每个位置存放的元素值数组中每个位置存放的元素值public class CommandParameter public static void main(String args)for(int i=0;iargs.length;i+)System.out.println(第+i+个参数是+argsi);

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

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

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

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