☰
5.java-数组
2026/10/5 8:07:50 网站建设 项目流程

概念

数组介绍:相同类型的数据按照一定顺序排列的集合。数组也是一组数据类型,是引用类型。数组在内存中以连续的内存块进行存储。

数组的长度:arr.length,数组最后位是arr[arr.length-1]

定义与初始化

定义
  1. 数据类型 数组名[] = new 数据类型[数组长度];数据类型[] 数组名= new 数据类型[数组长度]也是可以的。

    这样定义数组中的元素是默认值。

    数据类型 默认值--------------------------------------------byte,short,int,long0double,float0.0booleanfalsechar\u0000 引用数据类型null(空值)
  2. 也可以先声明,再分配空间

    数据类型[]数组名;数组名=new数据类型[数组长度];
  3. 静态初始化:

    数据类型[] 数组名 = {n1, n2, n3 ... }

    数据类型[] 数组名 = new 数据类型[]{n1, n2, n3 ... }

  4. 数组的数据类型是引用类型,所以数组变量存储是一个地址,这个地址指向堆内存的一块内存。所以数组一但创建,内存中的长度是固定的,无法更改这块内存的长度。

使用细节:

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();}}}

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询