1JAVA语言程序设计周敏彤zhoumintong@suda.edu.cn2关于上机文件名一致性类名:classABC{………}文件名:ABC.java编译后:ABC.class(java编译器产生)javacABCjavacABC.classjavaABC.class3第三讲程序的流程控制1.标准输出和输入2.命令行参数3.数学计算方法4.条件选择语句5.switch语句6.循环控制语句7.跳转语句4第四讲数组1.概念2.一维数组3.多维数组4.数组的界限5概念数组是一组同类型的变量或对象的集合数组的类型可以是基本类型,或类和接口数组中每个元素的类型相同引用数组元素通过数组名[下标]数组下标(数组的索引)从0开始的正整数数组是一种特殊的对象(Object)定义类型(声明)创建数组(分配内存空间):new释放(Java虚拟机完成)一维数组、多维数组6第四讲数组1.概念2.一维数组3.多维数组4.数组的界限7一维数组一维数组的元素只有一个下标变量例:A[1],c[3]一维数组的声明方法1:类型数组名[];Stringargs[];inta[];doubleamount[];charc[];方法2:类型[]数组名;String[]args;int[]a;double[]amount;char[]c;注意类型是数组中元素的数据类型(基本和构造类型)数组名是一个标识符数组声明后不能被访问,因未为数组元素分配内存空间8一维数组variabledmightnothavebeeninitializedSystem.out.println(d[0]);^1errordouble[]d;System.out.println(d[0]);9一维数组数组的创建用new来创建数组为数组元素分配内存空间,并对数组元素进行初始化格式:数组名=new类型[数组长度]例:a=newint[3];声明和创建的联用:int[]a=newint[3];默认赋初值整型初值为0int[]i=newint[3];实型初值为0.0float[]f=newfloat[3];布尔型初值为falseboolean[]b=newboolean[3];字符型初值为\u0000(不可见)char[]c=newchar[3];10一维数组classTest{publicstaticvoidmain(Stringargs[]){int[]i=newint[3];float[]f=newfloat[3];boolean[]b=newboolean[3];char[]c=newchar[3];for(intj=0;ji.length;j++)System.out.println(i[j]);for(intj=0;jf.length;j++)System.out.println(f[j]);for(intj=0;jb.length;j++)System.out.println(b[j]);for(intj=0;jc.length;j++)System.out.println(c[j]);}}C:\javaTest0000.00.00.0falsefalsefalseC:\11一维数组一维数组的初始化为数组元素指定初始值方式一:声明和创建数组后对数组初始化classTest{publicstaticvoidmain(Stringargs[]){inta[]=newint[5];System.out.println(“\t输出一维数组a:”);for(inti=0;i5;i++){a[i]=i+1;System.out.println(“\ta[”+i+“]=”+a[i]);}}}a.lengthC:\javaTest输出一维数组a:a[0]=1a[1]=2a[2]=3a[3]=4a[4]=5C:\12一维数组一维数组的初始化方式二:在声明数组的同时对数组初始化格式:类型数组名[]={元素1[,元素2……]};inta[]={1,2,3,4,5};classTest{publicstaticvoidmain(Stringargs[]){inta[]={1,2,3,4,5};System.out.println(“\t输出一维数组a:”);for(inti=0;i5;i++)System.out.println(“\ta[”+i+“]=”+a[i]);}}13一维数组数组的赋值数组的整体赋值用java.lang.System类的方法进行数组复制14一维数组数组整体赋值classTest{publicstaticvoidmain(Stringargs[]){inta[]={2,4,6,8};intb[];int[]c={1,3,5,7};b=a;c=a;for(intj=0;ja.length;j++)System.out.print(a[j]+““);System.out.println();for(intj=0;jb.length;j++)System.out.print(b[j]+““);System.out.println();for(intj=0;jc.length;j++)System.out.print(c[j]);}}C:\javaTest246824682468C:\inta[]={2,4,6,8,0};intb[];intc[]={1,3,5,7};inta[]={2,4,6,8};intb[];intc[]={1,3,5,7,9};15一维数组数组的复用(reuse)publicclassTest{publicstaticvoidmain(String[]args){int[]array={32,87,3,589,12,1076,2000};for(inti=0;iarray.length;i++)System.out.print(array[i]+);array=newint[4];for(inti=0;iarray.length;i++)array[i]=i+1;System.out.println();for(inti=0;iarray.length;i++)System.out.print(array[i]+);}}328735891210762000123416一维数组一维数组的数组复制java.lang.System类的方法publicstaticvoidarraycopy(Objectsrc,intsrcIndex,Objectdest,intdestIndex,intlength)srcdest17一维数组classTest{publicstaticvoidmain(Stringargs[]){inta[]={2,4,6,8};intb[];int[]c={1,3,5,7,9};b=a;System.arraycopy(a,1,c,0,3);System.out.print(“数组a:”);for(inti=0;ia.length;i++)System.out.print(a[i]+“”);System.out.println();System.out.print(“数组b:”);for(inti=0;ib.length;i++)System.out.print(b[i]+“”);System.out.println();一维数组的数组复制System.out.print(“数组c:”);for(inti=0;ic.length;i++)System.out.print(c[i]+“”);System.out.println();}}数组a:2468数组b:2468数组c:4687918一维数组数组的排序publicclassTest{publicstaticvoidmain(String[]args){int[]array={32,87,3,589,12,1076,2000,8,622,127};for(inti=array.length;--i=0;){for(intj=0;ji;j++){if(array[j]array[j+1]){inttemp=array[j];array[j]=array[j+1];array[j+1]=temp;}}}for(inti=0;iarray.length;i++)System.out.print(array[i]+);}}19一维数组小结类型相同、数量确定的存储结构用下标访问数组中任一个元素,数组名[下标]声明、创建(new)、初始化/赋值20一维数组intd[];System.out.println(d[0]);System.out.println(d.length);variabledmightnothavebeeninitializedSystem.out.println(d[0]);^System.out.println(d.length);^21第四讲数组1.概念2.一维数组3.多维数组4.数组的界限22多维数组数组的数组ArraysofArrays例:表格(行和列)以二维数组为例期中考试期末考试姓名总分6870学生A698085学生B847590学生C8623多维数组二维数组的声明类型数组名[][],例inta[][];数组声明后不能被访问,因未为数组元素分配内存空间二维数组的创建方法一:直接分配空间(new)例inta[][]=newint[2][3];a[0][0]a[0][1]a[0][2]a[1][0]a[1][1]a[1][2]两个一维数组,每个数组包含3个元素24多维数组二维数组的创建方法二:从最高维开始,为每一维分配空间例intc[][]=newint[2][];c[0]=newint[4];c[1]=newint[3];c[0][0]c[0][1]c[0][2]c[0][3]c[1][0]c[1][1]c[1][2]注:为数组分配空间需指定维数大小,至少最高维(最左边)大小错误:intb[][]=newint[][];25多维数组二维数组的初始化对每个元素单独进行赋值声明数组的同时初始化对数组元素的引用数组名[下标1][下标2]下标为非负的整型常数26多维数组二维数组的初始化每个元素单独进行赋值classTest{publicstaticvoidmain(Stringargs[]){inta[][]=newint[3][3];a[0][0]=1;a[1][1]=1;a[2][2]=1;System.out.println(“数组a:”);for(inti=0;ia.length;i++){for(intj=0;ja[i].length;j++)System.out.print(a[i][j]+“”);System.out.println();}}}最高维数组长度10001000127多维数组二维数组的初始化声明数组的同时初始化例inta[][]={{1,2,3},{3,4,5}};a[0][0]=1a[0][1]=2a[0][2]=3a[1][0]=3a[1][1]=4a[1][2]=5例String[][]cartoons={{Flint,Fred,Wim,Pebbles,Dino},{Rub,Barn,Bet,Bam},{Jet,Geo,Jane,Elroy,Judy,Rosie,Astro},{Sco,Sco,Shag,Velma,Fred,Dap}};inti=cartoons.length28多维数组杨辉三角形11112113311464115101051三角形腰上的数为1其他位置的数为其上一行相邻两个数之和29多维数组杨辉三角形用二维数组描述杨辉三角形a[1][1]a[2][1]a[2][2]a[3][1]a[3][2]a[3][3]