数组知识点补缺

1.二维数组的动态初始化

int[][]array1=new int[3][];//动态初始化1
/*外层元素初始化值为默认值。
内层元素初始化:不能调用,否则就报错*/

Int[][]array2=new int[3][2];//动态初始化2
/*外层元素初始化值:地址值
内层元素初始化值为默认值*/

//必须确定数组的长度

2.二维数组的默认值

public class Array{
   public static void main(String[]args){
       int[][]arr=new int[3][4];
       System.out.println(arr[0]);//结果为[I@15db9742 是一个地址值 ,在堆中存放的是地址值
       System.out.println(arr[0][0]);//结果为0
       System.out.println(arr);//[[I@15db9742 是一个二位数组的地址值
       int[][]arr1=new int[3][];
       System.out.println(arr1[1]);//结果为0 因为没有内层数组还没有值
       System.out.println(arr1[1][1]);//会报错,空指针异常 二维数租内部是空的
  }
}

3.数组的复制

错误方式array2=array1:

这里只是将array1的地址给了array2,实际上还是堆中的同一个数组.如果修改array2,堆里的数组也会改变,array1也会发生变化,所以这里不是复制。

/**
* @author new wei
* @date 2022/4/3 22:14
*/

/**
* COpy
* <h5>描述:</h5>
*/
public class Copy {
   public static void main(String[]agrs){
       int []array1=new int[]{1,2,3,4,5};
       int[]array2;
       array2=array1;//这里只是将array1的地址给了array2,实际上还是堆中的同一个数组
       for (int i : array2) {
           System.out.print(i);//12345
      }
       System.out.println("==============");
       for (int i = 0; i < array2.length; i++) {
           if (i % 2 == 0) {
               array2[i]=i;
          }
      }
       for (int i = 0; i < array2.length; i++) {
           System.out.print(array2[i]);//02244
      }
       System.out.println( );
       for (int i : array1) {
           System.out.print(i);//02244
      }
  }
}

正确方法

真正的方式应该是先建立一个空的二维数组,然后把已知二位数组的值给赋值过去;如下代码

/**
* @author new wei
* @date 2022/4/3 22:14
*/

import java.util.Arrays;

/**
* COpy
* <h5>描述:</h5>
*/
public class Copy {
   public static void main(String[]agrs){
       int []array1=new int[]{1,2,3,4,5};
       int[]array2=new int[array1.length];
       for (int i = 0; i <array1.length ; i++) {
           int j =i;
           array2[j]=array1[i];
      }
       System.out.println(Arrays.toString(array2));
       for (int i = 0; i < array2.length; i++) {
           if (i % 2 == 0) {
               array2[i]=i;
          }
      }
       System.out.print("=================");
       System.out.print(Arrays.toString(array2));
       System.out.print(Arrays.toString(array1));


  }
}



posted @ 2022-04-04 12:37  与否业务NOW  阅读(247)  评论(0)    收藏  举报