上一篇
Java数组如何表示?
- 后端开发
- 2025-07-03
- 2868
Java中数组的表示方式:使用方括号声明(如
int[] arr
或
int arr[]
),通过
new
关键字初始化(如
new int[5]
),索引从0开始访问元素(如
arr[0]
),数组长度固定,存储相同类型元素。
在Java中,数组是一种基础数据结构,用于存储固定大小的同类型元素,它通过连续内存分配实现高效访问,是处理批量数据的核心工具,以下是详细解析:
一维数组的表示
声明数组
// 语法:数据类型[] 数组名; int[] numbers; // 推荐写法(清晰表明数组类型) String names[]; // 兼容C风格的写法(不推荐)
创建数组
使用 new
关键字分配内存(数组长度固定):
numbers = new int[5]; // 创建长度为5的int数组(默认值:0) names = new String[3]; // 创建长度为3的String数组(默认值:null)
初始化数组
静态初始化(声明时直接赋值):
int[] primes = {2, 3, 5, 7, 11}; String[] colors = {"Red", "Green", "Blue"};
动态初始化:
int[] scores = new int[3]; scores[0] = 90; // 索引从0开始 scores[1] = 85; scores[2] = 78;
多维数组的表示
二维数组(矩阵)
// 声明与创建 int[][] matrix = new int[3][3]; // 3行3列 // 静态初始化 int[][] grid = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} }; // 访问元素 System.out.println(grid[1][2]); // 输出:6(第2行第3列)
不规则数组
每行长度可不同:
int[][] jaggedArray = new int[2][]; jaggedArray[0] = new int[]{1, 2}; // 第1行2个元素 jaggedArray[1] = new int[]{3, 4, 5}; // 第2行3个元素
关键特性与操作
-
长度获取
使用length
属性(非方法):int len = primes.length; // 返回5
-
遍历数组
// for循环 for (int i = 0; i < primes.length; i++) { System.out.println(primes[i]); } // 增强for循环(只读) for (String color : colors) { System.out.println(color); }
-
数组复制
System.arraycopy()
:高效复制int[] source = {1, 2, 3}; int[] dest = new int[3]; System.arraycopy(source, 0, dest, 0, source.length);
Arrays.copyOf()
:简化操作int[] copy = Arrays.copyOf(source, source.length);
-
常见异常
ArrayIndexOutOfBoundsException
:索引越界(如访问arr[5]
但数组长度为4)NullPointerException
:未初始化数组直接访问
注意事项
- 定长限制
数组创建后长度不可变,需动态扩容时建议用ArrayList
。 - 默认值规则
- 数值类型(
int
,double
等):0
- 布尔类型(
boolean
):false
- 引用类型(
String
, 对象等):null
- 数值类型(
- 内存效率
数组内存连续,访问时间复杂度为 O(1),适合高频随机访问场景。
工具类推荐
java.util.Arrays
提供常用操作:
import java.util.Arrays; // 排序 Arrays.sort(primes); // 二分查找(需先排序) int index = Arrays.binarySearch(primes, 5); // 转换为字符串 System.out.println(Arrays.toString(primes)); // 输出:[2, 3, 5, 7, 11]
Java数组通过索引高效访问元素,是处理有序数据的基石。
- 一维数组:
数据类型[] 变量名 = {值1, 值2, ...};
- 多维数组:
数据类型[][] 变量名 = new int[行][列];
- 核心操作:长度用
length
,遍历用循环,工具类选Arrays
。
引用说明:本文内容参考Oracle官方Java文档(Arrays in Java)及《Java核心技术·卷I》第10版,实践代码基于Java 17语法验证。