数组的概述:
       
 数组是一种连续内存、大小固定的线性表,是一种数据结构,用来解决大量的存储问题

数组的本质:

        数组是一系列空间大小相等且地址连续的一片存储空间。

注意:

        数组就是一片地址连续且空间大小一致的存储空间(但是每个空间存的还是其他数据的地址)。

        数组存在于堆内存中,但凡在堆中存储的数据都称之为对象。

        数组提供角标来访问数组当中的元素。

        数组变量存的就是数组在堆内存中首元素的地址。

        数组通过角标来访问元素的具体计算方式是:所要访问数据的地址 = 首元素地址 + 角标 * 数据类型大小。

        数组一旦定义下来,其长度不可改变;数组中有几个地址?就看数组有几个元素空间(数组 的长度)。

        创建数组时必须明确规定大小或内容。

数组的定义方式:

        创建数组只指定长度但不指定内容

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

        创建数组指定内容(同时长度就确定了

数据类型[] 数组名 = new 数据类型[]{数据1, 数据2, 数据3, ..., 数据n};


数据类型[] 数组名 = {数据1, 数据2, 数据3, ..., 数据n};
 

常见的数组操作:

        数组的遍历

public class ArrayTraversal {

    public static void main(String[] args) {

        int[] arr = new int[] { 1, 2, 3, 4, 5, 6 };

        for (int i = 0; i < arr.length; i++) {

        System.out.println(arr[i]);

        }

        for (int i : arr) {

            System.out.println(i);

        }
    }
}

             数组最值:        

public class ArrayMaxMinValue {
    public static void main(String[] args) {
        int[] arr = new int[] { 1, 2, 3, 4, 5, 6 };
        int max = arr[0];
        int min = arr[1];
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] < min) {
                min = arr[i];
            }
            if (arr[i] > max) {
                max = arr[i];
            }
        }
        System.out.println("min = " + min);
        System.out.println("max = " + max);
    }
}

数组扩容:   

public class ArrayExpansion {

    public static void main(String[] args) {

        int[] arr = new int[] { 1, 2, 3, 4, 5, 6 };

        arr = arrayExpansion(arr, arr.length + 1);

    }


    private static int[] arrayExpansion(int[] origin, int newLen) {

        int[] newArr = new int[newLen];

        for (int i = 0; i < origin.length; i++) {

            newArr[i] = origin[i];

            }

         return newArr;

    }

}

Arrays数组工具类

此类包含用来操作数组(比如排序和搜索)的各种方法。此类还包含一个允许将数组作为列表来查 看的静态工厂。

static int binarySearch(int[] a, int key) :使用二分搜索法来搜索指定的 int 型数组,以获得指定 的值。

static int[] copyOf(int[] original, int newLength) :复制指定的数组,截取或用 0 填充(如有必 要),以使副本具有指定的长度。

static boolean equals(int[] a, int[] a2) :如果两个指定的 int 型数组彼此相等 ,则返回 true 。

static void sort(int[] a) :对指定的 int 型数组按数字升序进行排序。 static String toString(int[] a) :返回指定数组内容的字符串表示形式。