第二章:基础语法
2.4 数组
1. 数组的概念
数组是Java中用于存储相同数据类型的固定大小的连续内存空间。数组中的每个元素通过索引(从0开始)访问,是Java中最基础的数据结构之一。
2. 数组的声明与初始化
2.1 声明数组
// 语法:数据类型[] 数组名;
int[] numbers; // 推荐写法
String names[]; // 兼容C风格的写法(不推荐)
2.2 初始化数组
// 静态初始化(直接赋值)
int[] arr1 = {1, 2, 3};
// 动态初始化(指定长度)
int[] arr2 = new int[5]; // 默认值为0
String[] arr3 = new String[3]; // 默认值为null
3. 多维数组
Java支持多维数组(如二维数组):
// 二维数组声明与初始化
int[][] matrix = {{1, 2}, {3, 4}};
// 动态初始化
double[][] table = new double[3][4];
4. 数组的常用操作
4.1 访问与修改元素
int[] arr = {10, 20, 30};
System.out.println(arr[1]); // 输出20
arr[2] = 40; // 修改第三个元素
4.2 遍历数组
// 方式1:for循环
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
// 方式2:增强for循环(Java 5+)
for (int num : arr) {
System.out.println(num);
}
4.3 数组长度
通过length属性获取:
int len = arr.length; // 注意不是方法(无括号)
5. 数组的工具类(Arrays)
Java提供java.util.Arrays工具类:
import java.util.Arrays;
// 排序
Arrays.sort(arr);
// 二分查找(需先排序)
int index = Arrays.binarySearch(arr, 20);
// 转换为字符串
System.out.println(Arrays.toString(arr));
6. 注意事项
- 索引越界:访问超出
0 ~ length-1范围会抛出ArrayIndexOutOfBoundsException。 - 固定长度:数组一旦创建,大小不可改变(需动态扩容时可使用
ArrayList)。 - 内存分配:数组是对象,存储在堆内存中。
7. 示例代码
public class ArrayDemo {
public static void main(String[] args) {
int[] scores = {85, 92, 78, 90};
// 计算平均分
double sum = 0;
for (int score : scores) {
sum += score;
}
System.out.println("平均分:" + sum / scores.length);
}
}
8. 常见面试题
- 数组和
ArrayList的区别? - 如何实现数组的深拷贝?
- 多维数组在内存中如何存储?
