




已阅读5页,还剩17页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章数组与方法,4.1一维数组4.2二维数组4.3方法,4.1一维数组,4.1.1一维数组的声明和初始化一般定义格式如下:array_typearray_Name;或array_typearray_Name;上面两种定义方式完全等价。例如:intArray1;floatArray2;上面所给的例子只是简单的变量声明,并没有给数组分配内存空间。我们在使用数组前还必须对其进行初始化(即为其分配内存空间)。给数组元素分配内存并为数组元素赋初值的过程称为数组初始化。初始化可分为动态初始化和静态初始化。,1静态初始化当数组元素的初始化值直接由括在大括号“”之间的数据给出时,就称为静态初始化。静态初始化往往和声明结合在一起使用,其格式如下:array_typearray_Name=element1,element2;其中,array_type为数组元素的类型;array_Name为数组名;element1、element2为array_type类型的数组元素初值;方括号“”表示可选项。例如:intfactorial=1,2,3,4,5,6,7,8;charch=a,A,b,B,c,C;doublef=12,45.12,88.123;,2动态初始化动态初始化先用new操作符为数组分配内存,然后才为每一个元素赋初值。其一般格式如下:array_Name=newarray_typearraySize;其中,array_Name是已定义的数组名;array_type为数组元素的数据类型,必须与定义时给出的数据类型保持一致;arraySize为数组的长度,它可为整型变量或常量。例如:inta;a=newint4;也可以将上两行合并为一行,写作:inta=newint4;,4.1.2一维数组的引用当有了数组的声明和初始化后,就可以在程序中引用数组的元素了。数组元素的引用是通过数组名和下标值来进行的,其一般格式如下:array_NamearrayIndex其中,array_Name为数组名,arrayIndex为数组元素的下标。例如:a1=100;数组的下标是一个int类型数,也可以使用short、byte、char类型(使用时转换成int类型),但下标不能是long类型的数。如果非得用long类型的数定义数组的下标,则须强制转换。比如:shorti;longk;intarray1i;intarray4(int)k;,在Java语言中,数组下标从0开始,到数组长度减1结束。每个数组都有一个属性length指明它的长度,例如:a.length指明数组a的长度。例4-1publicclassScorepublicstaticvoidmain(Stringargs)inta=1,2,3,4,5,sum=0;for(inti=0;ia.length;i+)sum+=ai;System.out.println(“sum=“+sum);,4.2二维数组,一维数组元素类型可以为数组,即数组的嵌套,多维数组中每个元素为一个低维数组。由于多维数组中用得较多的还是二维数组,因而我们着重讨论二维数组的属性,其他高维数组可以以此类推。4.2.1二维数组的声明和初始化二维数组声明的一般格式如下:array_typearray_Name;或array_typearray_Name;其中,array_type为数组元素类型,可以是任意的数据类型;array_Name为数组名,可以是Java中合法的标识符。,例如:intarray1;/定义一个整型二维数组或intarray2;/同样定义一个二维整型数组上面的定义并没有为数组元素分配内存空间,因而必须经过初始化后才能使用。二维数组在实际的使用过程中也分为静态初始化和动态初始化两种。初始化的过程与一维数组相同,在此不多加理论说明,而只是以初始化实例来加以说明。1静态初始化实例intnumber=1,2,3,4,5,6,7,8,9;charch=a,b,c,d,e,f;上例是在建立数组的同时用大括号中的值给它赋初值,得到了两个二维整型数组和二维字符数组。,2动态初始化实例1)直接为每一维分配空间:inta=newint23;/定义数组并为其分配存储空间2)从最高维开始,分别为每一维分配空间:inta=newint2;a0=newint3;a1=newint5;4.2.2二维数组的引用一般格式如下:array_NamearrayIndex1arrayIndex2其中,array_Name为数组名;arrayIndex1为数组元素的高维下标;arrayIndex2为数组的低维下标。二维数组中,下标同样是一个int类型数,也可以使用short、byte、char类型(使用时转换成int类型)。,在C/C+使用二维数组的时候,要求每一维的长度必须一致,例如在C中有如下的定义:intarray3;其对应的二维表如表3.1所示。表3.1C/C+中二维数组存储格式,在Java中,却并不要求多维数组的每一维长度相同。例如,当在Java有如下的定义:intarray3=newint3;时,其对应的二维表如表3.2所示。表3.2Java中二维数组存储格式,下面我们给出一个二维数组应用的实例。例4-2本例是通过二维数组sale存储业务员的季度销售量,并对其输出,再计算该年的总销售量并输出。/app6_4,二维数组的输入输出publicclassapp6_4publicstaticvoidmain(Stringargs)inti,j,sum=0;intsale=30,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程序通过方法完成对类和对象属性的操作。方法定义了在类成员变量上的一系列操作,它只能在类的内部声明并加以实现,其他的对象通过调用对象的方法得到该对象的服务。1.方法的定义方法的定义包含两部分内容:方法声明和方法体。方法声明的一般格式如下:modifierreturnTypemethodName(paramList)methodBodyreturnType指的是方法的返回值类型,methodName是方法名,paramList是参数表,包括参数的类型和名称。modifier为方法的修饰词,可以是以下几项:,4.3方法,public/protected/privatestaticfinalabstractnativesynchronized一般声明格式中的第一项是访问控制属性,以后会介绍。methodBody是方法体。方法体是对方法的实现,它包括局部变量的声明以及所有合法的Java指令。例3-4定义一个求三个整数中最大数的方法max3()。intmax3(intx,inty,intz)intbig;big=Math.max(x,y);/调用数学类Math中的方法max()big=Math.max(big,z);return(big);,2.方法的调用调用方法时,要用实际参数替换方法中的形式参数,实际参数要与形式参数一一对应。例3-5调用max3()方法,求三个整数中最大数。publicclassmethodDemopublicstaticvoidmain(Stringargs)inta=2,b=5,c=3,big;big=max3(a,b,c);System.out.println(“max=+big);staticintmax3(intx,inty,intz)intbig;big=Math.max(x,y);big=Math.max(big,z);return(big);,static:说明该方法为静态方法,静态方法我们也称作类方法。与之对应,其他的方法就为实例方法。静态方法属于类,所以只要对类作了声明,就可以直接调用该类的类方法,即使用时无须类的初始化。而实例方法不可以直接调用,只能在类的实例或子类的实例中调用。在方法的声明格式中,需要指明返回值的类型。当一个方法不需要返回值的时候,其类型说明为void,否则方法体中必须包含return语句。返回值既可以是基本数据类型,也可以是复杂数据类型。3.方法中参数的使用在C语言中,函数的参数存在值传递/参数传递的问题。比如C语言中如果参数是指针或数组名则为参数传递。在JAVA语言中复杂数据类型作参数相当于指针的使用,即参数传递(引用传递、地址传递),而基本数据类型作参数传递则相当于值传递。比如下例:,【例4-6】说明简单数据类型与引用数据类型的区别。importjava.io.*;publicclassPassTestfloatptValue;publicstaticvoidmain(Stringargs)intval;PassTestpt=newPassTest();val=11;System.out.println(OriginalIntValueis:+val);pt.changeInt(val);/值参数System.out.println(IntValueafterChangeis:+val);/*值参数值的修改,没有影响值参数的值*/pt.ptValue=101f;System.out.println(OriginalptValueis:+pt.ptValue);,pt.changeObjValue(pt);/引用类型的参数System.out.println(ptValueafterChangeis:+pt.ptValue);/*引用参数值的修改,改变了引用参数的值*/publicvoidchangeInt(intvalue)value=55;/在方法内部对值参数进行了修改publicvoidchangeObjValue(PassTestref)ref.ptValue=99f;/在方法内部对引用参数进行了修改运行结果:OriginalIntValueis:11IntValueafterChangeis:11OriginalptValueis:101.0ptValueafterChangeis:99.0,【例4-7】:数组做参数/app6_9,简单的范例publicclassapp6_9publicstaticvoidmain(Stringargs)intscore=5,3,8,12,6,7;/声明一维数组scorelargest(score);/将一维数组score传入largest()method,publicstaticvoidlargest(intarr)inttmp=arr0;for(inti=0;iarr.length;i+)if(tmparri)tmp=arri;System.out.println(largestnum=+tmp);,4.方法重载方法重载是指多个方法享有相同的名字,但是这些方法的参数必须不同,或者是参数的个数不同,或者是参数类型不同。返回类型不能用来区分重载的方法。参数类型的区分度一定要足够,例如不能是同一简单类型的参数,如int与long。【例4-8】importjava.io.*;classMethodOverloadingvoidreceive(inti)System.out.println(Receiveoneintdata);System.out.println(i=+i);voidreceive(intx,inty)System.out.println(Receiv
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 装修代售合同协议书
- 东西部消费协作协议书
- 2025年MySQL考试题材多样试题及答案
- 公寓房预订合同协议书
- 道路交通自行协议书
- 财务成本管理的链式反应试题与答案
- 财务成本管理在非营利组织中的应用试题及答案
- 2025年经济法知识运用能力试题及答案
- Delphi多线程编程相关试题及答案
- 国际法律师面试题及答案
- GB/T 14337-2008化学纤维短纤维拉伸性能试验方法
- L4-《采购与供应策略》-讲义课件
- 固定资产和无形资产培训课程课件
- 合欢树史铁生课件
- 机房工程系统调试检验批质量验收记录表
- 光伏项目试验报告
- DB37-T 3587-2019养老机构护理型床位认定
- 汽车电子可靠性测试项目-(全)-16750-1-to-5
- 丁苯橡胶乳液聚合的生产工艺
- JOINT VENTURE AGREEMENT合资企业协议(双语版)
- CJ343-2010 污水排入城镇下水道水质标准
评论
0/150
提交评论