




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、4.1 一 维 数 组 一维数组的声明和初始化一般定义格式如下: array_type array_Name ; 或 array_type array_Name;上面两种定义方式完全等价。例如: int Array1 ; float Array2; 上面所给的例子只是简单的变量声明,并没有给数组分配内存空间。我们在使用数组前还必须对其进行初始化(即为其分配内存空间)。给数组元素分配内存并为数组元素赋初值的过程称为(chn wi)数组初始化。初始化可分为动态初始化和静态初始化。第1页/共22页第一页,共22页。 1静态初始化 当数组元素的初始化值直接由括在大括号“ ”之间的数据给出时,就称为静态
2、初始化。静态初始化往往和声明结合在一起使用(shyng),其格式如下: 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页/共22页第二页,共22页。2动态初始化 动态初始化先用new操作符为数组分配内存,然后(rnhu
3、)才为每一个元素赋初值。其一般格式如下: array_Name = new array_type arraySize; 其中,array_Name是已定义的数组名;array_type为数组元素的数据类型,必须与定义时给出的数据类型保持一致;arraySize为数组的长度,它可为整型变量或常量。例如:int a;a= new int4; 也可以将上两行合并为一行,写作: int a= new int4;第3页/共22页第三页,共22页。 一维数组的引用 当有了数组的声明和初始化后,就可以在程序中引用数组的元素了。数组元素的引用是通过数组名和下标值来进行的,其一般格式如下: array_Name
4、 arrayIndex 其中,array_Name为数组名,arrayIndex为数组元素的下标。例如:a1=100;数组的下标是一个(y )int类型数,也可以使用short、byte、char类型(使用时转换成int类型),但下标不能是long类型的数。如果非得用long类型的数定义数组的下标,则须强制转换。 比如: short i; long k; int array1 i; int array4 (int) k;第4页/共22页第四页,共22页。 在Java语言中,数组下标(xi bio)从0开始,到数组长度减1结束。每个数组都有一个属性length指明它的长度,例如:a.length
5、指明数组a的长度。例4-1 public class Score public static void main (String args) int a = 1,2,3,4,5,sum=0;for (int i=0; ia.length; i+) sum+=ai; “sum=“+sum);第5页/共22页第五页,共22页。4.2 二 维 数 组一维数组元素类型可以为数组,即数组的嵌套,多维数组中每个元素为一个低维数组。由于多维数组中用得较多的还是二维数组,因而我们着重讨论二维数组的属性,其他高维数组可以以此类推。二维数组的声明和初始化 二维数组声明的一般格式(g shi)如下: array_t
6、ype array_Name ; 或 array_type array_Name; 其中,array_type为数组元素类型,可以是任意的数据类型;array_Name为数组名,可以是Java中合法的标识符。第6页/共22页第六页,共22页。例如: int array1 ; /定义一个整型二维数组 或 int array2; /同样定义一个二维整型数组上面的定义并没有为数组元素分配内存空间,因而必须经过初始化后才能使用。二维数组在实际的使用过程(guchng)中也分为静态初始化和动态初始化两种。初始化的过程(guchng)与一维数组相同,在此不多加理论说明,而只是以初始化实例来加以说明。 1静
7、态初始化实例 int number = 1,2,3,4,5,6,7,8,9; char ch = a, b,c, d,e, f;上例是在建立数组的同时用大括号中的值给它赋初值,得到了两个二维整型数组和二维字符数组。第7页/共22页第七页,共22页。 2动态初始化实例 1) 直接为每一维分配空间: int a = new int23; /定义数组并为其分配存储空间 2 ) 从 最 高 维 开 始 , 分 别 ( f n b i ) 为 每 一 维 分 配 空 间 :int a = new int2 ;a 0 = new int3;a1= new int5; 二维数组的引用一般格式如下:array
8、_Name arrayIndex1 arrayIndex2 其中,array_Name为数组名;arrayIndex1为数组元素的高维下标;arrayIndex2为数组的低维下标。二维数组中,下标同样是一个int类型数,也可以使用short、byte、char类型(使用时转换成int类型)。第8页/共22页第八页,共22页。 在C/C+使用二维数组的时候,要求每一维的长度必须一致,例如在C中有如下的定义:int array 3;其对应的二维表如表3.1所示。表3.1 C/C+中二维数组存储(cn ch)格式array00array01array0narray10array11array1nar
9、ray20array21array2n 在Java中,却并不要求(yoqi)多维数组的每一维长度相同。例如,当在Java有如下的定义: int array 3=new int3; 时,其对应的二维表如表3.2所示。表3.2 Java中二维数组存储格式array00array01array0narray10array11array1marray20array21array2k第9页/共22页第九页,共22页。 下面我们(w men)给出一个二维数组应用的实例。 例4-2 本例是通过二维数组sale存储业务员的季度销售量,并对其输出, 再计算该年的总销售量并输出。 / app6_4,二维数组的输入
10、输出 public class app6_4 public static void main(String args) int i,j,sum=0; int sale=30,35,26,32,33,34,30,29; / 声明数组并设置初值 第10页/共22页第十页,共22页。for(i=0;isale.length;i+)/ 输出销售量并计算(j sun)总销售量 业务员+(i+1)+的业绩分别为); for(j=0;jsalei.length;j+) sum+=saleij; 年总销售量+sum+份保单); 第11页/共22页第十一页,共22页。 Java程序通过方法完成对类和对象属性的操
11、作。方法定义了在类成员变量上的一系列操作,它只能在类的内部声明并加以实现,其他的对象通过调用对象的方法得到该对象的服务。1. 方法的定义方法的定义包含两部分内容:方法声明和方法体。方法声明的一般格式如下: modifierreturnType methodName(param List) methodBody returnType 指的是方法的返回值类型,methodName 是方法名,param List 是参数表,包括(boku)参数的类型和名称。 modifier 为方法的修饰词,可以是以下几项:4.3 方 法第12页/共22页第十二页,共22页。 public/protected/pr
12、ivatestaticfinalabstractnativesynchronized一般声明格式中的第一项是访问控制属性,以后会介绍。 methodBody 是方法体。方法体是对方法的实现,它包括局部变量的 声明以及(yj)所有合法的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);第13页/共22页第十三页,共22页。 2. 方法的调用调用方法时,要
13、用实际参数替换(t hun)方法中的形式参数,实际参数要与形式参数一一对应。例3-5 调用max3()方法,求三个整数中最大数。 public class methodDemo public static void main(String args) int a=2, b=5, c=3, big; big=max3(a,b,c);static int max3(int x, int y, int z) int big; big=Math.max(x,y); big=Math.max(big,z); return (big); 第14页/共22页第十四页,共22页。 static: 说明该方法为
14、静态方法,静态方法我们也称作类方法。与之对应,其他的方法就为实例方法。静态方法属于类,所以只要对类作了声明(shngmng),就可以直接调用该类的类方法,即使用时无须类的初始化。而实例方法不可以直接调用,只能在类的实例或子类的实例中调用。在方法的声明(shngmng)格式中,需要指明返回值的类型。当一个方法不需要返回值的时候,其类型说明为void,否则方法体中必须包含return语句。返回值既可以是基本数据类型,也可以是复杂数据类型。3. 方法中参数的使用 在C语言中,函数的参数存在值传递/参数传递的问题。比如C语言中如果参数是指针或数组名则为参数传递。在JAVA语言中复杂数据类型作参数相当于
15、指针的使用,即参数传递(引用传递、地址传递),而基本数据类型作参数传递则相当于值传递。比如下例:第15页/共22页第十五页,共22页。 【例4-6】说明(shumng)简单数据类型与引用数据类型的区别。 public class PassTestfloat ptValue;public static void main(String args) int val;PassTest pt=new PassTest();val=11;pt.changeInt(val); /值参数/*值参数 值的修改,没有影响值参数的值*/pt.ptValue=101f;第16页/共22页第十六页,共22页。 pt.
16、changeObjValue(pt); /引用类型的参数(cnsh)/* 引用参数(cnsh)值的修改,改变了引用参数(cnsh)的值*/ public void changeInt(int value)value=55; /在方法内部对值参数(cnsh)进行了修改public void changeObjValue(PassTest ref)ref.ptValue=99f; /在方法内部对引用参数(cnsh)进行了修改 运行结果 : Original Int Value is: 11 Int Value after Change is: 11 Original ptValue is: 101
17、.0 ptValue after Change is: 99.0第17页/共22页第十七页,共22页。 【例4-7】 :数组做参数 / app6_9, 简单的范例 public class app6_9 public static void main(String args) int score=5,3,8,12,6,7; / 声明(shngmng)一维数组score largest(score); / 将一维数组score传入largest() method 第18页/共22页第十八页,共22页。 public static void largest(int arr) int tmp=arr
18、0; for(int i=0;iarr.length;i+) if(tmparri) tmp=arri; 第19页/共22页第十九页,共22页。 4. 方法重载方法重载是指多个方法享有相同的名字,但是(dnsh)这些方法的参数必须不同,或者是参数的个数不同,或者是参数类型不同。返回类型不能用来区分重载的方法。参数类型的区分度一定要足够,例如不能是同一简单类型的参数,如int与long。 【例4-8】c l a s s M e t h o d O v e r l o a d i n g void receive(int i) v o i d r e c e i v e ( i n t x , i n t y ) 第20页/共22页第二十页,共22页。 public class
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论