『Java』数组

在学习数组之前先学习java.util.Arrays类中的一个静态方法Arrays.toString()

该方法可以将传入的数组格式化为一个字符串,便于我们查看数组内容,例如:

import java.util.Arrays;

public class Dome001_Array {
    public static void main(String[] args) {
        int[] arr = new int[5]; // 定义一个数组
        
        for (int i = 0; i < 5; i++) { // 为每个元素赋值
            arr[i] = i + 2;
        }

        String res = Arrays.toString(arr);
        System.out.println(res);
    }
}

输出结果为:[2, 3, 4, 5, 6]

数组的定义与初始化

Java中数组索引从0开始。

方法一

定义方法:

数据类型[] 数组名字 = new 数据类型[长度];

例如:

int[] arr1 = new int[10];
String[] arr2 = new String[5];

该种方式定义的数组如果不进行初始化,不同类型数组具有不同的默认值:

import java.util.Arrays;

public class Dome001_Array {
    public static void main(String[] args) {
        int[] arr1 = new int[5];
        System.out.println(Arrays.toString(arr1));
        // 输出:[0, 0, 0, 0, 0]
        // int数组默认值为0

        char[] arr2 = new char[5];
        System.out.println(Arrays.toString(arr2));
        // 输出:[ ,  ,  ,  ,  ]
        // char默认值为u0000

        double[] arr3 = new double[5];
        System.out.println(Arrays.toString(arr3));
        // 输出:[0.0, 0.0, 0.0, 0.0, 0.0]
        // double默认值为0.0

        String[] arr4 = new String[5];
        System.out.println(Arrays.toString(arr4));
        // 输出:[null, null, null, null, null]
        // 引用类型默认值为空(null)
    }
}

方法二

数据类型[] 数组名字 = new 数据类型[] {元素1, 元素2 ...};

第二个[]中不能写长度值,{元素1, 元素2 ...}是数组中存放的元素值,类型要跟数据类型[]中的一致。

例如:

import java.util.Arrays;

public class Dome001_Array {
    public static void main(String[] args) {
        int[] arr = new int[]{1, 2, 3};
        System.out.println(Arrays.toString(arr));
        // 输出:[1, 2, 3]
    }
}

方法三

数据类型[] 数组名字 = {元素1, 元素2 ...};

例如:

import java.util.Arrays;

public class Dome001_Array {
    public static void main(String[] args) {
        int[] arr = {1, 2, 3};
        System.out.println(Arrays.toString(arr));
        // 输出:[1, 2, 3]
    }
}

数组的长度属性

每个数组都有长度,而且是【固定】的,通过数组名.length可获得数组的长度。

public class Dome001_Array {
    public static void main(String[] args) {
        int[] arr = {1, 2, 3};
        int len = arr.length;
        System.out.println(len); // 3
    }
}

数组常见异常

数组越界异常

public class Dome001_Array {
    public static void main(String[] args) {
        int[] arr = new int[10];
        arr[10] = 1;
    }
}

产生ArrayIndexOutOfBoundsException数组越界异常:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 10 out of bounds for length 10
	at cn.xxmmqg.Array.Dome001_Array.main(Dome001_Array.java:8)

空指针异常

public class Dome001_Array {
    public static void main(String[] args) {
        int[] arr = new int[10];
        arr = null;
        int len = arr.length;
    }
}

产生NullPointerException空指针异常:

Exception in thread "main" java.lang.NullPointerException: Cannot read the array length because "arr" is null
	at cn.xxmmqg.Array.Dome001_Array.main(Dome001_Array.java:9)
原文地址:https://www.cnblogs.com/xxmmqg/p/14413508.html