数组 Array

概述 Overview
说明
相同类型的数据的有序集合
每个数据是数组的一个元素,通过数组下标/索引快速访问;索引从0开始
数组是引用类型
数组元素必须是同一类型:可以是基本类型,也可以是引用类型
使用{}初始化数组
数组的大小是固定的;一旦创建,长度不能改变
超过数组分配的空间大小,编译时会报错
数值型的数组元素,未赋值时默认是0/0.0
声明
数据类型[] 变量名;
[]先声明再通过new分配大小,,也称动态初始化
int[] score;
score = new int[10];
score[0] = 1;
score[9] = 3;
score[10] = 5;//Index 10 out of bounds for length 10
[]声明并通过{}初始化,也称静态初始化
int[] level = { 1, 2, 3 };
level[3] = 5;//Index 3 out of bounds for length 3
数组使用
遍历 For
根据数组索引依次访问每一个数据元素;[快捷输入 fori]
int[] level = { 1, 2, 3, 4, 5 };
for (int i = 0; i < level.length; i++) {
    System.out.println(level[i]);
}
增强遍历 For-Each
不依赖数组索引即可依次访问每一个数据元素;不能单独操作某一个数据元素;[快捷输入 foreach]
int[] level = { 1, 2, 3, 4, 5 };
for (int i : level) {
    System.out.println(i);
}
[]数组反转
package base.class1;

public class Function {
    public static void main(String[] args) {
        int[] level = { 1, 2, 3, 4, 5 };
        dis(level);
        dis(reverse(level));
    }

    public static int[] reverse(int[] arr) {
        int[] res = new int[arr.length];
        for (int i = 0; i < arr.length; i++) {
            res[arr.length - 1 - i] = arr[i];
        }
        return res;
    }

    public static void dis(int[] arr) {
        for (int i : arr) {
            System.out.println(i);
        }
    }
}
多维数组
二维数组
第一个[]表示行;第二个[]表示列
int[][] arr
[]遍历二维数组3x4
使用for输出
int[][] arr = { { 1, 2, 3, 4 }, { 4, 5, 6, 7 }, { 7, 8, 9, 0 } };
for (int i = 0; i < arr.length; i++) {
    for (int j = 0; j < arr[i].length; j++) {
        System.out.println(arr[i][j]);
    }
    System.out.println("---");
}
使用foreach格式化输出
int[][] arr = { { 1, 2, 3, 4 }, { 4, 5, 6, 7 }, { 7, 8, 9, 0 } };
for (int[] is : arr) {
    for (int is2 : is) {
        System.out.print(is2 + "\t");
    }
    System.out.println();
}
执行结果
1       2       3       4
4       5       6       7
7       8       9       0
多维数组
... ...
数组类 Arrays
说明
封装了很多静态函数,不需要new就可以直接使用
主要是排序 sorting 和查找 searching
使用时需要导入工具包import java.util.Arrays;
查阅API文档,获取更多信息
[]数组排序
package base.class1;

import java.util.Arrays;

public class Function {
    public static void main(String[] args) {
        int[] arr = { 1, 12, 3, 4, 11, 23, 4, 6 };
        System.out.println(Arrays.toString(arr));
        Arrays.sort(arr);
        System.out.println(Arrays.toString(arr));
    
        char[] chars = { 'a', 'a', 'c', '1', 'm', 'd', '2', '0' };
        System.out.println(Arrays.toString(chars));
        Arrays.sort(chars);
        System.out.println(Arrays.toString(chars));
    }
}
执行结果
[1, 12, 3, 4, 11, 23, 4, 6]
[1, 3, 4, 4, 6, 11, 12, 23]
[a, a, c, 1, m, d, 2, 0]
[0, 1, 2, a, a, c, d, m]
[]数组填充
int[] arr = new int[5];
Arrays.fill(arr, 2);
System.out.println(Arrays.toString(arr));
执行结果
[2, 2, 2, 2, 2]