您好,欢迎访问三七文档
第四章:数组和字符串复杂数据类型/引用数据类型数组的基础知识数组的复制数组作为方法的参数二维数组字符串类String与字符串相关的函数目录什么是数组?数组是用来存储数据的集合,一个存储具有相同类型的变量集合。以前,我们存储N个整型的做法是:intx1,x2,┈┈,xn现在,我们可以声明一个数组变量Numbers,那么number[0],number[1],┈┈,number[n-1]表示单个变量。数组的使用,数组的使用遵循先创建后使用的规定。数组的定义分为两步:1、声明数组变量;2、创建数组声明数组变量的语法格式为:数组类型[]数组名;int[]num;数组和字符串——数组的基本知识声明数组变量仅仅创建一个数组的引用地址,内存中并没有给数组分配任何空间。如果变量没指向任何数组,则变量的值为null,系统不会给它分配任何内存空间。我们可以利用new操作符创建一个数组:数组名=new数组类型[数组大小];num=newint[10];当然我们亦可以用一条语句来完成这一过程:数组类型数组名=new数组类型[数组大小];intnum=newint[10];数组和字符串——创建数组intnum[]=newint[9];//这条语句声明了数组变量num,创建了一个由10个int型元素构成的数组,并将该数组的引用赋给num,那么在内存中的存储状况如下:数组和字符串——数组的创建10987654321num[0]num[1]num[2]num[3]num[4]num[5]num[6]num[7]num[8]num[9]4321引用num数组的初始化——对一个数组进行赋值的过程一般对数组初始化的语法格式如下:数据类型[]数组名={直接量0,直接量1,┈┈,直接量k};int[]num={1,2,3,4};当然我们也可以在创建数组之后对数组中的单个数组元素进行赋值int[]num=newint[4];num[0]=1;num[1]=2;num[2]=3;num[3]=4;int[]num;num={1,2,3,4};×intnum;num[0]=1;×数组和字符——数组的使用数组元素的访问:数组中的元素是通过下标来访问的,数组的下标的范围为0到arrayRefVar.length-1。其语法格式如下:arrayRefVar[index];(index表示下标)Example:int[]num=newint[10];for(inti=0;inum.length;i++)num[i]=i+1;数组长度:数组中元素的个数。通过arrayRefVar.length可以求出该数组的长度数组和字符串——数组的使用试编写一个类用来求一个数组中的最大元素及其下标值publicclassTestArray{publicintprintMax(int[]array){intmax=array[0];intindex=0;for(inti=1;iarray.length;i++){if(maxarray[i]){max=array[i];index=i;}System.out.println(“Theismaxiumis”+max+”(“+index+”)”);returnindex;}数组和字符串——数组的使用应用举例publicstaticvoidmain(String[]args){Scannerinput=newScanner(System.in);intnum1,i=0,index;System.out.println(“Pleaseenteranumberasthelengthofarray:”);num1=input.nextInt();int[]num=newint[num1];System.out.println(“Pleaseenterfivenumbersasthevalueofarray:”);while(input.hasNext()){if(i==num)break;num[i]=input.nextInt();i++;}index=printMax(num);System.out.println(“Themaxiumis”+num[index]);}}数组和字符串——数组的使用应用举例通常在程序中我们需要数组的全部元素或一部分。我们采用什么方法呢?方法一:用循环语句逐个复制数组的元素。int[]sourceArray={1,2,3,4,5};int[]targetArray=newint[sourceArray.length];for(inti=0;isourceArray.length;i++)targetArray[i]=sourceArray[i];方法二:使用System类中的静态方法arraycopy.arraycopy(sourceArray,srcpos,targetArray,tarpos,length);srcpost和tarpos分别指源数组sourceArray和目标数组targetArray中的起始位置,复制的个数由length决定数组和字符串——数组的复制方法中的参数既可以是基本数据类型也可以是复杂数据类型(对象、数组、字符串)基本数据类型——按值传递;复杂数据类型——按引用值传递数组和字符串——数组作为方法的参数publicclassTestPassArray{publicstaticvoidmain(String[]args){int[]a={1,2};System.out.println(“Beforeinvokingswap”);System.out.println(“arrayis{”+a[0]+a[1]+”}”);swap(a[0],a[1]);System.out.println(“Afterinvokingswap”);System.out.println(“arrayis{”+a[0]+a[1]+”}”);System.out.println(“BeforeinvokingswapArray”);System.out.println(“arrayis{”+a[0]+a[1]+”}”);swapArray(a);System.out.println(“AfterinvokingswapArray”);System.out.println(“arrayis{”+a[0]+a[1]+”}”);}publicstaticvoidswap(inta,intb){inttemp;temp=a;a=b;b=temp;}publicstaticvoidswapArray(int[]array){inttemp;temp=array[0];array[0]=array[1];array[1]=temp;}}数组和字符串——应用举例思考一下程序的答案?可以使用二维数组表示矩阵或表格。声明二维数组的语法:数据类型[][]数组名;例:声明int型的二维数组变量matrixint[][]matrix;创建二维数组:matrix=newint[5][5];数组元素赋值:matrix[2][1]=7;//每个下标必须放在一对方括号中数组和字符串——二维数组可以使用静态初始化来声明、创建和初始化二维数组。我们是通过下标来访问二维数组中的特定元素的。例如,我们要访问array中的第二行的第三个元素,就可以用array[2][3]来访问数组和字符串——二维数组的使用int[][]array={{1,2,3},{4,5,6}};int[][]array=newint[2][3];array[0][0]=1;array[0][1]=2;array[0][2]=3;array[1][0]=4;array[1][1]=5;array[1][2]=6;等价于实际上,二维数组x的每个元素都是一个一维数组,数组中元素的个数即是数组的长度(二维数组的行数),可以用x.length求得。元素x[0],x[1],┈┈┈,x[x.length-1]也是数组,它们的长度可以用x[0].length,x[1].length,┈┈,x[x.length-1].length求得。数组和字符串——二维数组X[0][0]X[0][1]X[0][2]X[0][3]X[1][0]X[1][1]X[1][2]X[1][3]X[2][0]X[2][1]X[2][2]X[2][3]X[0]X[1]X[2]试求下列矩阵中每行中最大值并将它们存在一个数组中,并将每行的数据之和存另一个数组中。数组和字符串——应用举例10117213206122233031923340414253publicclassTestDoubleArray{publicstaticint[]max(int[][]array){int[]max=newint[array.length];for(inti=0;iarray.length;i++){intmax=array[i][0];for(intk=0;karray[i].length;k++)if(maxarray[i][k])max=array[i][k];max[i]=max;}returnmax;}//求每一行中的最大值,并把他们存在一个数组中数组和字符串——应用举例publicstaticint[]sum(int[][]array){int[]sum=newint[array.length];for(inti=0;iarray.length;i++){intsum=0;for(intk=0;karray[i].length,k++)sum+=array[i][k];sum[i]=sum;}}//求每一行元素之和,并把他们存在一个数组中数组和字符串——应用举例publicstaticvoidprint(int[]array){for(inti=0;iarray.length;i++){System.out.print(array[i]+””);}System.out.println();}//输出一个数组中的所以元素数组和字符串——应用举例publicstaticvoidmain(String[]args){int[][]array=newint[4][4];int[]max=newint[array.length];int[]sum=newint[array.length];max=max(array);sum=sum(array);print(max);print(sum);}//主函数}数组和字符串——应用举例前面所创建的数组,其元素都是基本数组类型;但是Java允许创建元素为对象的数组,这类数组称为对象数组。创建对象数组的语法格式:类名[]数组名=new类名[大小];Circle[]circleArray=newCircle[10];要初始化数组circleArray,可以使用下面语句:for(inti=0;i10;i++){circleArray[i]=newCircle();}数组和字符串——对象数组circleArray[0]circleArray[1];┈┈circleArray[9]Circle对象0Circle对象kCircle对象9引用circleArray试求对象数组circleArray中半径最大的元素publicclassTestObjectArray{publicstaticCirclemax(Cicrle[]array){Circlemax_Circle=array[0];for(inti=1;iarray.length,i++){if(max_Cirlce.getArea()array[i].getArea()){max_Circle=array[i];}}returnmax_Circle;}//求对象数组中面积最大的Circle对象数组和字符串——对象数组应用
本文标题:第四章数组和字符串
链接地址:https://www.777doc.com/doc-2169406 .html