数组类型及操作
Java中的数组是一种固定长度的、存储相同类型元素的数据结构,是Java中最基本的数据集合类型。
作用
数组在Java中具有重要作用:
- 存储大量同类型数据
 - 提供快速随机访问能力
 - 作为其他数据结构的基础
 - 用于实现各种算法
 - 处理批量数据操作
 
例子
public class ArrayDemo {
    public static void main(String[] args) {
        // 数组声明和初始化
        int[] numbers = {10, 20, 30, 40, 50};
        // 访问数组元素
        System.out.println("第一个元素: " + numbers[0]);  // 10
        System.out.println("数组长度: " + numbers.length); // 5
        // 遍历数组
        System.out.println("数组元素:");
        for(int i = 0; i < numbers.length; i++) {
            System.out.println(numbers[i]);
        }
        // 增强for循环
        System.out.println("使用增强for循环:");
        for(int num : numbers) {
            System.out.println(num);
        }
        // 多维数组
        int[][] matrix = {
            {1, 2, 3},
            {4, 5, 6},
            {7, 8, 9}
        };
        System.out.println("矩阵对角线:");
        for(int i = 0; i < matrix.length; i++) {
            System.out.println(matrix[i][i]);
        }
        // 数组操作
        int[] arr = new int[5];
        arr[0] = 100;  // 赋值
        int value = arr[0];  // 取值
        arr[1] = arr[0] * 2;  // 计算
        // 数组工具类
        java.util.Arrays.sort(arr);  // 排序
        int index = java.util.Arrays.binarySearch(arr, 100);  // 二分查找
        System.out.println("100的位置: " + index);
    }
}
详细说明
Java数组的主要特性:
- 
基本特性:
- 固定长度,创建后不可改变
 - 索引从0开始
 - 存储相同类型的元素
 - 内存连续分配
 
 - 
数组操作:
- 创建:new关键字或字面量
 - 访问:使用索引
 - 遍历:for循环或增强for循环
 - 长度:length属性
 
 - 
多维数组:
- 二维数组:数组的数组
 - 不规则数组:每行长度可以不同
 - 访问:使用多个索引
 
 - 
数组工具类:
- 排序:Arrays.sort()
 - 查找:Arrays.binarySearch()
 - 比较:Arrays.equals()
 - 填充:Arrays.fill()
 - 复制:Arrays.copyOf()
 
 
注意事项
- 数组下标从0开始,访问越界会抛出ArrayIndexOutOfBoundsException
 - 数组长度固定,需要动态大小请使用ArrayList
 - 数组是对象,但存储基本类型时会自动装箱
 - 多维数组实际上是数组的数组
 - 数组可以使用Arrays类提供的工具方法进行排序、搜索等操作
 
// 展示数组的浅拷贝和深拷贝问题
public class ArrayCopyDemo {
    public static void main(String[] args) {
        // 创建一个数组
        int[] originalArray = {1, 2, 3, 4, 5};
        // 浅拷贝:直接赋值
        int[] shallowCopy = originalArray;
        shallowCopy[0] = 10;
        System.out.println("原数组第一个元素(浅拷贝后): " + originalArray[0]); // 输出10
        // 深拷贝:使用Arrays.copyOf()
        int[] deepCopy = java.util.Arrays.copyOf(originalArray, originalArray.length);
        deepCopy[0] = 20;
        System.out.println("原数组第一个元素(深拷贝后): " + originalArray[0]); // 输出10
        System.out.println("深拷贝数组第一个元素: " + deepCopy[0]); // 输出20
    }
}