概念
数组介绍:相同类型的数据按照一定顺序排列的集合。数组也是一组数据类型,是引用类型。数组在内存中以连续的内存块进行存储。
数组的长度:arr.length,数组最后位是arr[arr.length-1]
定义与初始化
定义
数据类型 数组名[] = new 数据类型[数组长度];数据类型[] 数组名= new 数据类型[数组长度]也是可以的。这样定义数组中的元素是默认值。
数据类型 默认值--------------------------------------------byte,short,int,long0double,float0.0booleanfalsechar\u0000 引用数据类型null(空值)也可以先声明,再分配空间
数据类型[]数组名;数组名=new数据类型[数组长度];静态初始化:
数据类型[] 数组名 = {n1, n2, n3 ... }数据类型[] 数组名 = new 数据类型[]{n1, n2, n3 ... }数组的数据类型是引用类型,所以数组变量存储是一个地址,这个地址指向堆内存的一块内存。所以数组一但创建,内存中的长度是固定的,无法更改这块内存的长度。
使用细节:
1.数组中的元素可以进行自动转换。
2.数组属于引用类型,数组型数据是对象
Java 中的[]运算符被预定义为检查数组边界,而且没有指针运算,即不能通过a加1得到数组的下一个元素。
数组赋值机制
基本数据类型赋值机制是值拷贝。
数组在默认情况下是引用传递,变量里存储的是地址,指向创建的数组,也就是说数组就是一个在堆内存区创建一个对象。
数组操作:
importjava.util.Arrays;publicclassArray02{publicstaticvoidmain(String[]args){copyArr();revArr();addArr();delArr();}publicstaticvoidaddArr(){//定义一个新的数组,长度oldArr.length+1,//向新的元素赋值给新数组(最后一位);//将原来的变量指向新数组intaddItem=10;int[]arr1={1,3,4,5,6};printArr(arr1,"原来的数组是:");int[]temp=newint[arr1.length+1];temp[arr1.length]=addItem;for(inti=0;i<temp.length;i++){if(i<=arr1.length-1){temp[i]=arr1[i];}}arr1=temp;printArr(arr1,"增加元素后是:");}publicstaticvoiddelArr(){//定义一个新的数组, 长度oldArr.length-1,//获取原来数组中的前oldArr.length-1位的值赋给新数组;//将原来的变量指向新数组;int[]arr1={1,3,4,5,6};printArr(arr1,"原来的数组是:");int[]temp=newint[arr1.length-1];for(inti=0;i<temp.length;i++){temp[i]=arr1[i];}arr1=temp;printArr(arr1,"删除元素后是:");}//翻转数组publicstaticvoidrevArr(){int[]arr1={1,3,4,5,6};for(inti=0;i<(arr1.length/2);i++){inttemp=arr1[i];arr1[i]=arr1[(arr1.length-1)-i];arr1[(arr1.length-1)-i]=temp;}printArr(arr1,"");}//复制数组publicstaticvoidcopyArr(){int[]arr1={1,3,4,5,6};//数组直接赋值,赋值的是地址。两个变量指向同一个内存int[]arr2=arr1;arr2[2]=5;System.out.println(arr2[2]);System.out.println(arr1[2]);int[]arr3=Arrays.copyOf(arr1,arr1.length);arr3[2]=10;System.out.println(arr3[2]);System.out.println(arr2[2]);System.out.println(arr1[2]);}//打印数组publicstaticvoidprintArr(int[]arr,Stringstr){System.out.println(str);for(inti=0;i<arr.length;i++){System.out.print(arr[i]+" ");}System.out.println();}}for(item: conllection){ }collection这一集合表达式必须是一个数组或者是一个实现了Iterable接口的类对象(例如ArrayList)。
在Java中,允许数组长度为0。在编写一个结果为数组的方法时,如果碰巧结果为空,则这种语法形式就显得非常有用。此时可以创建一个长度为0的数组:new elementType[0]; //注意,数组长度为0与null 不同。
多维数组(二维):
静态初始化
数据类型[][] 数组名 = {{...}, {...}, {...}};
动态初始化
数据类型[][] 数组名 = new 类型[长度][长度]
数据类型[][]数组名 数组名=new类型[长度][长度];第二位的长度可以不写,表示第二位不确定。 数据类型[]数组名[]数据类型 数组名[][]遍历
for循环嵌套遍历
列数不确定:
在java中,二维数组中的(第二列)不是确定的,例如:
代码实现
importjava.util.Arrays;publicclassArray03{publicstaticvoidmain(String[]args){int[][]arr=newint[3][];for(inti=0;i<arr.length;i++){arr[i]=newint[i+1];for(intj=0;j<arr[i].length;j++){arr[i][j]=i+1;}}for(inti=0;i<arr.length;i++){for(intj=0;j<arr[i].length;j++){System.out.print(arr[i][j]+" ");}System.out.println();}}}