版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1.声明数组
格式1:数组元素类型数组名[];格式2:数组元素类型[]数组名;其中,数组元素的类型可以是根本类型,也可以是类或接口。例如,要保存某批学生的成绩,可以定义一个数组score,声明如下:intscore[];或者int[]score;一维数组与数学上的数列有着很大的相似性。a1,a2,a3…特点也是元素名字相同,下标不同。创立一维数组需要以下三个步骤4.1数组
2.创立数组空间给已声明的数组分配空间:
数组名=new数组元素类型[元素个数];
例如,score=newint[10];score[0]0
score[1]0
score[2]0
score[3]0
score[4]0
score[5]0
score[6]0
score[7]0
score[8]0
score[9]0在声明数组的同时给数组规定空间,两步合并。例如:intscore[]=newint[10];//创立同时声明3.创立数组元素并初始化格式如下:格式1:类型
数组名[]={初值表};格式2:类型
数组名[]=new类型[]{初值表};例如:
intscore[]={1,2,3,4,5,6,7,8,9,10};intscore[]=newint[]{1,2,3,4,5,6,7,8,9,10};
score.length
指明数组score的长度。例4-1求10个学生的平均成绩(未完〕publicclassEx4_1{publicstaticvoidmain(Stringargs[]){intscore[]=newint[10];
for(intk=0;k<score.length;k++){score[k]=(int)(Math.random()*101);System.out.print(score[k]+"\t");//输出数组元素}();学生的平均成绩(续〕
/*以下计算输出平均成绩*/intsum=0;for(intk=0;k<score.length;k++)sum+=score[k];System.out.println("平均成绩为:"+sum/10);}}特殊for循环for(元素类型循环变量名:数组名){循环体}求数组所有元素之和可改写为:
for(intx:score)sum+=x;
其中,x的取值随循环从score[0],score[1],…,score[9]变化。例4-2将一维数组元素按由小到大排列publicclassTestSort{publicstaticvoidmain(Stringarge[]){inta[]={4,6,3,8,5,3,7,1,9,2};intn=a.length;System.out.println("排序前…");for(intk=0;k<n;k++)System.out.print(""+a[k]);System.out.println();4385371926for(inti=0;i<n-1;i++)for(intj=i+1;j<n;j++)if(a[i]>a[j]){/*交换a[i]和a[j]*/inttemp=a[i];a[i]=a[j];a[j]=temp;}System.out.println("排序后…");for(intk=0;k<n;k++)System.out.print(""+a[k]);}}Arrays类Arrays类封装了对数组进行操作的一系列静态方法。利用Arrays类的sort方法可方便地对数组排序。例如:java.util.Arrays.sort(a);//作用等价于上面程序红色局部利用Arrays类的toString()方法可以将数组转化为字符串的形式。例如:System.out.print(java.util.Arrays.toString(a));//将a数组转化为串输出1.二维数组声明格式1:数组元素类型数组名[][];格式2:数组元素类型[][]数组名;例如:inta[][];2.
创立二维数组空间
〔1〕直接为每一维分配空间,如:inta[][]=newint[2][3];〔2〕从最高维开始,按由高到低的顺序分别为每一维分配空间。如:inta[][]=newint[2][];a[0]=newint[3];a[1]=newint[4];二维数组看作是数组的数组,不要求二维数组每一维的大小相同二维数组中求数组长度要获取数组的行数,可以通过如下方式获得:数组名.length数组的列数那么要先确定行,再通过如下方式获取列数:数组名[行标].length例4-3二维数组动态创立例如publicclassArrayOfArraysDemo2{publicstaticvoidmain(String[]args){int[][]aMatrix=newint[4][];for(inti=0;i<aMatrix.length;i++){aMatrix[i]=newint[i+1];for(intj=0;j<aMatrix[i].length;j++)aMatrix[i][j]=i+j;}for(inti=0;i<aMatrix.length;i++){for(intj=0;j<aMatrix[i].length;j++)System.out.print(aMatrix[i][j]+"");System.out.println();}}}3.创立数组元素并初始化元素是根本类型,系统将按默认规那么赋初值。元素类型为其它引用类型,那么其所有元素为未赋初值状态〔null〕。在数组定义时同时进行初始化,如:inta[][]={{1,2,3},{4,5,6}};intb[][]={{1,2},{4,5,6}};更为常见的做法是在数组定义后通过循环语句给数组赋值。4.2.1方法声明修饰符1...返回值类型方法名(形参表)[throws异常列表]{
方法体各语句;}
形式参数列表的格式如下:
类型1参数名1,类型2参数名2,...
return返回值必须与方法头定义的返回类型相匹配return表达式;//方法返回结果为表达式的值return;
//用于无返回值的方法退出4.2.2方法调用实参的个数、类型、顺序要与形参对应一致。调用的执行过程是:首先将实参传递给形参,然后执行方法体。得到方法结果;程序从调用该方法的下一个语句继续执行。形式:方法名〔实际参数表〕
publicclassEx4_4{/*求n!的方法fac(n)*/publicstaticlongfac(intn){longres=1;for(intk=2;k<=n;k++)res=res*k;returnres;}例4-4编写求阶乘的方法,并利用求阶乘的方法实现一个求组合的方法
返回结果要符合方法头定义的要求/*求n个中取m个的组合方法*/publicstaticlongcom(intn,
intm){returnfac(n)/(fac(n-m)*fac(m));}publicstaticvoidmain(Stringargs[]){for(intn=0;n<=3;n++){for(intm=0;m<=n;m++)System.out.print(com(n,m)+"");System.out.println();}}}参数要符合形参定义要求11112113314.2.3参数传递根本数据类型的参数传递是以传值的方式进行,即将实际参数的值传递给形参;在方法内对形参的修改只影响形参单元,不影响实参引用类型〔如对象、数组等〕参数传递是按地址进行传递的。在方法内对形参的访问实际是访问所指引用对象实参x5形参n5实参obj对象引用形参n对象引用例4-5根本类型参数传递演示publicclassTest1{staticvoidparaPass(intx){x=x+1;
System.out.println("x="+x);
}publicstaticvoidmain(Stringargs[]){
intm=5;paraPass(m);System.out.println("m="+m);
}}5m5x6x=6m=5例4-6引用类型的参数传递publicclassTest2{staticvoidparaRef(intx[]){x[1]=x[1]+1;}publicstaticvoidmain(Stringargs[]){inta[]={1,4,6,3};paraRef(a);for(intk=0;k<a.length;k++)System.out.print(a[k]+"\t");}}a1463x地址引用地址51563·递归求阶乘staticintfac(intn){if(n==1)return1;elsereturnn*fac(n-1);
}n=3函数值:3*fac(2)求fac(3)函数值:2*fac(1)n=2求fac(2)callreturnn=1函数值:1求fac(1)例4-5输出命令行所有参数publicclassAllCommandPara{publicstaticvoidmain(String[]args){for(inti=0;i<args.length;i++)System.out.println(args[i]+"");}}E:\java>javaAllCommandPara"hellogood"34
"my
123"hellogood34my
123思考以下问题数组的定义与分配空间的关系?数组赋初值的方法?默认初值如何确定?如何实现对数组的遍历访问?1维,2维如何得到数组的大小?1维,2维如何理解方法定义与方法调用?使用方法的好处?方法定义的参数形态说明了什么?根本类型参数传递和引用类型参数传递差异?Java的命令行参数怎么提供数据?数组局部练习1〕利用随机函数产生20个学生的英语成绩存入一个数组中。
★输出数组所有元素,每行输出3个数;★求最高分、最低分;★求平均成绩。2〕利用随机函数产生36个10~30之间的整数给一个6*6的矩阵赋值.
★求最大元素值,指出其在矩阵中的所有出现位置;
★求该矩阵的转置矩阵。方法--上机练习1〕编写根据三条边求三角形面积的方法。利用该方法求以下两个三角形面积。〔1〕三条边分别为:3,4,5〔2〕三条边分别为:5.3,6.2,82〕从命令行参数获取两个整数,找出两个整数之间的所有素数,每行输出3个数。以下代码的输出结果?publicclassTest{
staticintx=5;publicstaticvoidmain(Stringargv[]){change(x);x++;System.out.println(x);}staticvoidchange(intm){m+=2;}}A.7B.6C.5D.8○以下代码的输出结果?classtest3{publicstaticvoidmain(Stringargs[]){int[]a={1,2,3,4};for(inti=0;i<4;i++)a[i]=a[i]+i;for(intb:a)System.out.println(b);}}结果1357
课堂练习---等级考试上机题---将程序补充完整publicclassJava_2{
publicstaticvoidmain(String[]args){
int[]arrayOfInts={32,87,3,59,12,106,20,8,62,127};
intsearchfor=12;
inti=0;
booleanfoundIt=false;
for(;i<
;i++){
if(arrayOfInts[i]==searchfor){foundIt=
;break;}
}
if(foundIt){S
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论