1、数组的含义 一组能够存储相同数据类型值的变量集合。如果我们有很多个相同类型的变量需要存除,如果每一个变量都单个定义,那么就会非常繁琐,而且不便于后期代码的维护。 就比如生活中的衣柜,如果给每一件衣服都放在一个衣柜里,那么不仅存放衣服这一过程会非常复杂,需要不停开门关门,对有限的空间资源占用也很大,所以我们会选择将所有的衣服放在同一个衣柜里,此时的衣服就相当于相同类型的变量,衣柜就相当于一个数组。 2、定义数组的几种方式 (1)使用默认的初始值来初始化数组中的每一个元素。 定义格式:数组元素类型〔〕数组名new数组元素类型〔数组中元素个数(数组的长度)〕 示例publicclassTest01{publicstaticvoidmain(String〔〕args){1、定义一个名为array的数组int〔〕arraynewint〔10〕;}} (2)先声明,然后再赋予默认的初始值,就是将(1)中的进行拆分 定义格式:数组元素类型〔〕数组名;数组名new数组元素类型〔数组中元素个数(数组的长度)〕; 示例publicclassTest01{publicstaticvoidmain(String〔〕args){2、定义一个名为array的数组int〔〕arraynewint〔10〕;}} (3)先声明,再使用指定的值进行初始化 定义格式数组元素类型〔〕数组名new数组元素类型〔〕{元素1,元素2,元素3,。。。} 示例publicclassTest01{publicstaticvoidmain(String〔〕args){3、定义一个名为array的数组int〔〕arraynewint〔〕{1,2,3,4,5,6,7};}} (4)将第三种写法简写,直接给数组赋值 定义格式数组元素类型〔〕数组名{元素1,元素2,元素3,。。。} 示例publicclassTest01{publicstaticvoidmain(String〔〕args){4、定义一个名为array的数组int〔〕array{1,2,3,4,5,6,7};}} 注意 数组中的每一个数据称为元素,数组元素的位置从0开始,数组中的位置称为下标; 数组一定要有长度,在定义时指定长度或者直接给定数组的元素个数,即为长度; 3、遍历数组 (1)利用for循环遍历数组publicclassTest01{publicstaticvoidmain(String〔〕args){定义一个名为array的数组int〔〕array{1,2,3,4,5,6,7};for循环遍历数组intlengtharray。for(inti0;i){System。out。println(array〔i〕);}}}控制台输出:1234567 (2)利用foreach遍历数组 语法格式for(数组中的元素类型变量:数组名){对变量需要进行的操作} 这种遍历方式不能控制下标,会遍历数组中所有的数据; 示例publicclassTest01{publicstaticvoidmain(String〔〕args){定义一个名为array的数组int〔〕array{1,2,3,4,5,6,7};foreach循环遍历数组for(intarr:array){System。out。println(arr);}}}控制台输出:1234567 (3)利用可变参数遍历数组 语法publicstaticvoidtraversal(int。。。变量名){遍历操作} 示例publicclassTest01{publicstaticvoidmain(String〔〕args){traversal(1,2,3,4);}publicstaticvoidtraversal(int。。。array){intlengtharray。for(inti0;i){System。out。println(array〔i〕);}}} 注意点 可变参数相当于一个数组,作为数组使用,传值的时候直接传数组; 可变参数只能是参数列表中的最后一个,如果可变参数后面还有参数,会把传递的参数全部赋值到可变参数中,会导致可变参数后面的参数接收不到值。 4、遍历数组时的异常 (1)空指针异常(NullPointerException) 当一个变量为null时,即没有赋值时,调用该变量的属性和方法 示例publicclassTest02{publicstaticvoidmain(String〔〕args){int〔〕for(inti0;iprepdatatrack218 pdatatrack219em(2)数组下标越界异常(ArrayIndexOutOfBoundsException)empdatatrack220遍历数组时超出了数组的实际长度,就会导致数组下标越界异常pdatatrack221示例precodepublicclassTest03{publicstaticvoidmain(String〔〕args){int〔〕array{1,2,3,4};for(inti0;i5;i){System。out。println(array〔i〕);}}}控制台输出:1234Exceptioninthreadmainjava。lang。ArrayIndexOutOfBoundsException:4atstudy。Test03。main(Test03。java:8) 5、数组内存结构 数组内存结构 在内存中分栈内存和堆内存, 栈内存大小固定,用于存储局部变量、基本数据类型的临时变量和引用类型变量; 堆内存大小不固定,存储的是对象。数组是引用类型,会存储在堆内存中; 存储数组时,实际是在栈内存中存入了一个地址,这个地址指向堆中一块特定的内存区域。 6、二维数组 Java中没有真正的多维数组,多维数组的表示方式是数组中的元素还是数组,遍历二维数据就是将利用两次for循环,外层for循环遍历外层数组,内层for循环遍历数组中的数组,完成要完成的操作即可。 示例:publicclassTest04{publicstaticvoidmain(String〔〕args){int〔〕〔〕array{{1,2,3},{4,5,6},{7,8,9}};inttemp0;intlength1array。for(inti0;ilength1;i){intlength2array〔i〕。for(intj0;jlength2;j){temparray〔0〕〔0〕;}}System。out。println(temp);}} 7、数组的最大值与最小值publicclassTeat05{publicstaticvoidmain(String〔〕args){int〔〕array{25,435,245,24,5};getMax(array);getMin(array);}publicstaticvoidgetMax(int〔〕array){intmaxarray〔0〕;intlengtharray。for(inti0;i){if(array〔i〕max){maxarray〔i〕;}}System。out。println(数组中最大值是max);}publicstaticvoidgetMin(int〔〕array){intminarray〔0〕;intlengtharray。for(inti0;i){if(array〔i〕min){minarray〔i〕;}}System。out。println(数组中最小值是min);}}控制台输出:数组中最大值是435数组中最小值是5