数组类型及操作
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
}
}