998第4章 数组与方法.ppt

上传人:sccc 文档编号:5660257 上传时间:2023-08-06 格式:PPT 页数:22 大小:151.51KB
返回 下载 相关 举报
998第4章 数组与方法.ppt_第1页
第1页 / 共22页
998第4章 数组与方法.ppt_第2页
第2页 / 共22页
998第4章 数组与方法.ppt_第3页
第3页 / 共22页
998第4章 数组与方法.ppt_第4页
第4页 / 共22页
998第4章 数组与方法.ppt_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《998第4章 数组与方法.ppt》由会员分享,可在线阅读,更多相关《998第4章 数组与方法.ppt(22页珍藏版)》请在三一办公上搜索。

1、第4章 数组与方法,4.1 一维数组 4.2 二维数组4.3 方法,4.1 一 维 数 组,4.1.1 一维数组的声明和初始化一般定义格式如下:array_type array_Name;或 array_type array_Name;上面两种定义方式完全等价。例如:int Array1;float Array2;上面所给的例子只是简单的变量声明,并没有给数组分配内存空间。我们在使用数组前还必须对其进行初始化(即为其分配内存空间)。给数组元素分配内存并为数组元素赋初值的过程称为数组初始化。初始化可分为动态初始化和静态初始化。,1静态初始化 当数组元素的初始化值直接由括在大括号“”之间的数据给出

2、时,就称为静态初始化。静态初始化往往和声明结合在一起使用,其格式如下:array_type array_Name=element1,element2;其中,array_type为数组元素的类型;array_Name为数组名;element1、element2为array_type类型的数组元素初值;方括号“”表示可选项。例如:int factorial=1,2,3,4,5,6,7,8;char ch=a,A,b,B,c,C;double f=12,45.12,88.123;,2动态初始化 动态初始化先用new操作符为数组分配内存,然后才为每一个元素赋初值。其一般格式如下:array_Name=

3、new array_type arraySize;其中,array_Name是已定义的数组名;array_type为数组元素的数据类型,必须与定义时给出的数据类型保持一致;arraySize为数组的长度,它可为整型变量或常量。例如:int a;a=new int4;也可以将上两行合并为一行,写作:int a=new int4;,4.1.2 一维数组的引用 当有了数组的声明和初始化后,就可以在程序中引用数组的元素了。数组元素的引用是通过数组名和下标值来进行的,其一般格式如下:array_Name arrayIndex 其中,array_Name为数组名,arrayIndex为数组元素的下标。例如

4、:a1=100;数组的下标是一个int类型数,也可以使用short、byte、char类型(使用时转换成int类型),但下标不能是long类型的数。如果非得用long类型的数定义数组的下标,则须强制转换。比如:short i;long k;int array1 i;int array4(int)k;,在Java语言中,数组下标从0开始,到数组长度减1结束。每个数组都有一个属性length指明它的长度,例如:a.length指明数组a的长度。例4-1 public class Score public static void main(String args)int a=1,2,3,4,5,su

5、m=0;for(int i=0;ia.length;i+)sum+=ai;System.out.println(“sum=“+sum);,4.2 二 维 数 组,一维数组元素类型可以为数组,即数组的嵌套,多维数组中每个元素为一个低维数组。由于多维数组中用得较多的还是二维数组,因而我们着重讨论二维数组的属性,其他高维数组可以以此类推。4.2.1 二维数组的声明和初始化 二维数组声明的一般格式如下:array_type array_Name;或 array_type array_Name;其中,array_type为数组元素类型,可以是任意的数据类型;array_Name为数组名,可以是Java中

6、合法的标识符。,例如:int array1;/定义一个整型二维数组 或 int array2;/同样定义一个二维整型数组上面的定义并没有为数组元素分配内存空间,因而必须经过初始化后才能使用。二维数组在实际的使用过程中也分为静态初始化和动态初始化两种。初始化的过程与一维数组相同,在此不多加理论说明,而只是以初始化实例来加以说明。1静态初始化实例 int number=1,2,3,4,5,6,7,8,9;char ch=a,b,c,d,e,f;上例是在建立数组的同时用大括号中的值给它赋初值,得到了两个二维整型数组和二维字符数组。,2动态初始化实例 1)直接为每一维分配空间:int a=new in

7、t23;/定义数组并为其分配存储空间 2)从最高维开始,分别为每一维分配空间:int a=new int2;a 0=new int3;a1=new int5;4.2.2 二维数组的引用一般格式如下:array_Name arrayIndex1 arrayIndex2 其中,array_Name为数组名;arrayIndex1为数组元素的高维下标;arrayIndex2为数组的低维下标。二维数组中,下标同样是一个int类型数,也可以使用short、byte、char类型(使用时转换成int类型)。,在C/C+使用二维数组的时候,要求每一维的长度必须一致,例如在C中有如下的定义:int array

8、 3;其对应的二维表如表3.1所示。表3.1 C/C+中二维数组存储格式,在Java中,却并不要求多维数组的每一维长度相同。例如,当在Java有如下的定义:int array 3=new int3;时,其对应的二维表如表3.2所示。表3.2 Java中二维数组存储格式,下面我们给出一个二维数组应用的实例。例4-2 本例是通过二维数组sale存储业务员的季度销售量,并对其输出,再计算该年的总销售量并输出。/app6_4,二维数组的输入输出public class app6_4 public static void main(String args)int i,j,sum=0;int sale=3

9、0,35,26,32,33,34,30,29;/声明数组并设置初值,for(i=0;isale.length;i+)/输出销售量并计算总销售量 System.out.print(业务员+(i+1)+的业绩分别为);for(j=0;jsalei.length;j+)System.out.print(saleij+);sum+=saleij;System.out.println();System.out.println(n2002年总销售量+sum+份保单);,Java程序通过方法完成对类和对象属性的操作。方法定义了在类成员变量上的一系列操作,它只能在类的内部声明并加以实现,其他的对象通过调用对象

10、的方法得到该对象的服务。1.方法的定义方法的定义包含两部分内容:方法声明和方法体。方法声明的一般格式如下:modifierreturnType methodName(param List)methodBody returnType 指的是方法的返回值类型,methodName 是方法名,param List 是参数表,包括参数的类型和名称。modifier 为方法的修饰词,可以是以下几项:,4.3 方 法,public/protected/privatestaticfinalabstractnativesynchronized一般声明格式中的第一项是访问控制属性,以后会介绍。methodBod

11、y 是方法体。方法体是对方法的实现,它包括局部变量的 声明以及所有合法的Java指令。例3-4 定义一个求三个整数中最大数的方法max3()。int max3(int x,int y,int z)int big;big=Math.max(x,y);/调用数学类Math中的方法max()big=Math.max(big,z);return(big);,2.方法的调用调用方法时,要用实际参数替换方法中的形式参数,实际参数要与形式参数一一对应。例3-5 调用max3()方法,求三个整数中最大数。public class methodDemo public static void main(Strin

12、g args)int a=2,b=5,c=3,big;big=max3(a,b,c);System.out.println(“max=+big);static int max3(int x,int y,int z)int big;big=Math.max(x,y);big=Math.max(big,z);return(big);,static:说明该方法为静态方法,静态方法我们也称作类方法。与之对应,其他的方法就为实例方法。静态方法属于类,所以只要对类作了声明,就可以直接调用该类的类方法,即使用时无须类的初始化。而实例方法不可以直接调用,只能在类的实例或子类的实例中调用。在方法的声明格式中,需

13、要指明返回值的类型。当一个方法不需要返回值的时候,其类型说明为void,否则方法体中必须包含return语句。返回值既可以是基本数据类型,也可以是复杂数据类型。3.方法中参数的使用 在C语言中,函数的参数存在值传递/参数传递的问题。比如C语言中如果参数是指针或数组名则为参数传递。在JAVA语言中复杂数据类型作参数相当于指针的使用,即参数传递(引用传递、地址传递),而基本数据类型作参数传递则相当于值传递。比如下例:,【例4-6】说明简单数据类型与引用数据类型的区别。import java.io.*;public class PassTestfloat ptValue;public static

14、void main(String args)int val;PassTest pt=new PassTest();val=11;System.out.println(Original Int Value is:+val);pt.changeInt(val);/值参数System.out.println(Int Value after Change is:+val);/*值参数 值的修改,没有影响值参数的值*/pt.ptValue=101f;System.out.println(Original ptValue is:+pt.ptValue);,pt.changeObjValue(pt);/引用

15、类型的参数System.out.println(ptValue after Change is:+pt.ptValue);/*引用参数值的修改,改变了引用参数的值*/public void changeInt(int value)value=55;/在方法内部对值参数进行了修改public void changeObjValue(PassTest ref)ref.ptValue=99f;/在方法内部对引用参数进行了修改运行结果:Original Int Value is:11 Int Value after Change is:11 Original ptValue is:101.0 ptVa

16、lue after Change is:99.0,【例4-7】:数组做参数/app6_9,简单的范例public class app6_9 public static void main(String args)int score=5,3,8,12,6,7;/声明一维数组score largest(score);/将一维数组score传入largest()method,public static void largest(int arr)int tmp=arr0;for(int i=0;iarr.length;i+)if(tmparri)tmp=arri;System.out.println(

17、largest num=+tmp);,4.方法重载方法重载是指多个方法享有相同的名字,但是这些方法的参数必须不同,或者是参数的个数不同,或者是参数类型不同。返回类型不能用来区分重载的方法。参数类型的区分度一定要足够,例如不能是同一简单类型的参数,如int与long。【例4-8】import java.io.*;class MethodOverloadingvoid receive(int i)System.out.println(Receive one int data);System.out.println(i=+i);void receive(int x,int y)System.out.println(Receive two int datas);System.out.println(x=+x+y=+y);,public class MethodOverloadingTest public static void main(String args)MethodOverloading mo=new MethodOverloading();mo.receive(1);mo.receive(2,3);编译器会根据参数的个数和类型来决定当前所使用的方法。运行结果:Receive one int data i=1 Receive two int datas x=2 y=3,

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

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号