Java Array数组

1,490 阅读2分钟

基础

数组对于每一门编程语言来说都是极其重要的数据结构之一。

声明数组变量

dataType[] dataArr;

创建数组

dataType[] dataArr1 = new dataType[arraySize];
dataType[] dataArr2 = {value0, value1, ..., valuen};

数组的元素是通过索引访问的。数组索引从0开始,到dataArr.length - 1结束。

二维数组

dataType[][] dataArr1 = new dataType[size][size];
dataType[][] dataArr2 = {{value}, {value}};

默认值
如果数组声明后并没有赋值。则会根据变量类型的不同,赋给数组不同的默认值。如下:

变量类型默认值
byte0
short0
int0
long0L
float0.0f
double0.0d
char\u0000
booleanfalse

处理数组
数组的元素类型和数组的大小是确定的,所以当处理数组元素时,我们通常使用基本循环或者For-Each循环。

public class ArrayCc {
    public static void main(String[] args) {
        int[] arr = {1, 2, 3, 4, 5};
        // for 循环
        for (int i = 0; i < arr.length; i++) {
            // 循环体
        }
        
        // for-each 循环
        for(int value: int) {
            // 循环体
        }
    }
}

Arrays 类

在java中,对象都是以new实例类来分配内存。使用new实例的数组对象意味着可以使用变量来声明数组的长度,而不用在程序中事先决定数组长度。
另一方面数组的索引值从0开始是因为索引值表示所指定的数组元素相对于该数组第一个元素位的位移量(Offset),位移量为0自然就是指第一个元素。

数组方法

Arrays.fill(int[] arr, int val)
// 将指定的 int 值 val 分配给 int 类型数组 arr 指定范围中的每一个元素。

Arrays.sort(Object[] arr)
// 对指定对象数 arr 组进行排列。

Arrays.equals(int[] arr1, int[] arr2)
如果两个数组的元素全部相等则返回true,否则返回false。

Arrays.binarySearch(Object[] arr, Object key)
// 用二分查找算法在给定数组 arr 中搜索给定值 key 。数组在调用前必须排序好的。如果查找值包含在数组中,则返回搜索键的索引;否则返回 (-(*插入点*) - 1)。

Arrays.deepEquals()
// 对数组或多维数组进行深入比较

Arrays.deepToString()
// 对数组或多维数组进行深度输出

Arrays.copyOf(int[] arr, length)
// 对数组进行赋值并返回一个新的数组对象。如果新数组长度超过原数组长度,则保留数组默认值

常见异常

  • ArrayIndexOutOfBoundsException 数组下标越界异常
  • NullPointerException 空指针异常