java数组基本概念

数组动态初始化

数组是引用数据类型,有内存分配问题。
数组动态初始化(声明并开辟数组):

数组类型[] 数组名称 = new 数组类型[长度];
int[] data = new int[5];

a.数组通过下标索引来取得元素,默认从0开始。数组下标超出数组长度,抱一个数组越界异常(运行时异常:"java.lang.ArrayIndexOutOfBoundsException)
b.数组中每个元素都有默认值,默认值是该数据类型默认值
c.数组名称.length:取得数组长度
d.数组遍历推荐使用for-each循环(仅限于数组内容读取),要修改数组内容,还是使用常规for循环

public class Test{
    public static void main(String[] args){
        int[] x = new int[2];//开辟了一个长度为3的数组
        System.out.println(x.length);
        x[0] = 1;//对数组元素赋值
        x[1] = 2;
        for(int i:x){ //for-each循环
            System.out.println(i);//不使用下标的情况下遍历数组
        }
    }
   
}

运行结果:

2
1
2

当然数组也可以分步进行数组实例化:

int[] x = null;
x = new int[3];

数组属于引用数据类型,必须在使用前初始化,否则会NULLPointerException(运行异常)

数组引用传递

public class Test{
    public static void main(String[] args){
        int[] x = null;
        x = new int[3];
        System.out.println(x.length);
        x[0] = 10;
        x[1] = 20;
        x[2] = 30;
        for(int i:x){ 
            System.out.println(i);
        }
    }
   
}

对上述代码进行数组空间分析:
在这里插入图片描述
引用传递空间:同一块堆内存空间可以被不同的栈内存所指向。

public class Test{
    public static void main(String[] args){
        int[] x = null;
        int[] temp = null;
        x = new int[3];
        System.out.println(x.length);
        x[0] = 10;
        x[1] = 20;
        x[2] = 30;
        for(int i:x){ 
            System.out.println(i);
        }
        temp = x;//引用传递
        temp[0] = 50;

    }
   
}

内存分析:
在这里插入图片描述
引用传递的内存分析都是类似的:同一块堆被不同的栈内存指向。

数组静态初始化

简化格式:数组类型[ ] 数组名称 = {值,值…};
完整格式:数组类型[ ] 数组名称 = new 数组类型[ ]{值,值…};
eg:int[ ] data = new int[ ]{1,3,5,7,9};

在数组定义时直接设置内容,根据值的个数确定数组长度,且长度不可以修改
匿名数组:使用一次就完了,不占用栈空间

System.out.print(new int[]{1,3,5,7,9}[0]);

二维数组

动态初始化

数组类型[ ][ ] 数组名称 = new 数组类型[行个数][列个数]
eg:int[ ][ ] data = new int[3][4];

静态初始化

数组类型[ ][ ] 数组名称 = new 数组类型[ ][ ]{{第一行值},{第二行值},…};
data.length:行长度
data[x].length:列长度

public class Test{
    public static void main(String[] args){
       int[][] data = new int[3][4];
       for(int i = 0;i < 3; i++){
           for(int j = 0; j < 4; j++){
               System.out.print(data[i][j] + "、");
           }
           System.out.println(" ");
       }
       System.out.println(data.length);
       System.out.println(data[0].length);
    }
   
}

运行结果:

0、0、0、0、
0、0、0、0、
0、0、0、0、
3
4

猜你喜欢

转载自blog.csdn.net/qq_39032310/article/details/83348221