Java基础 — 数组

Java基础 — 数组

介绍

Java数组是存储固定数量同类型元素的有序集合,属于基础数据结构。数组在内存中以连续空间存储数据,通过下标(索引)访问元素,索引从0开始。声明数组时可使用两种语法:数据类型[] 数组名(推荐)或数据类型 数组名[]。创建数组需指定长度,如int[] scores = new int[5]声明长度为5的整型数组,此时所有元素初始化为0(基本类型默认值,对象数组初始化为null)。

数组特点鲜明:长度固定(通过数组名.length获取),元素类型统一,支持随机访问(时间复杂度O(1))。初始化方式分为静态初始化(int[] arr = {1,2,3})和动态初始化。二维数组本质是"数组的数组",例如int[][] matrix = new int[3][4]创建3行4列的矩阵。

尽管数组无法动态扩容,但其高效的读写性能使其广泛应用于数值计算、算法实现等场景,是理解更复杂集合类(如ArrayList)的重要基础。开发中常结合循环结构处理批量数据操作。

数组声明与初始化

声明:数据类型[] 数组名;或数据类型 数组名[];初始化:

// 动态初始化(指定长度)

int[] arr1 = new int[5]; // 默认值0

// 静态初始化(指定元素)

int[] arr2 = {1, 2, 3};

String[] names = new String[]{"Alice", "Bob"};

访问与修改元素

索引从0开始,通过数组名[索引]访问元素。

int[] arr = {10, 20, 30};

System.out.println(arr[0]); // 输出10

arr[1] = 200; // 修改第二个元素为200

数组长度

固定不可变,通过数组名.length获取长度。

int[] arr = new int[5];

System.out.println(arr.length); // 输出5

遍历数组

Java数组遍历常用for循环和增强for循环。传统for通过索引访问元素(如for(int i=0; i

普通for循环

for (int i = 0; i < arr.length; i++) {

System.out.println(arr[i]);

}

增强for循环(foreach)

for (int num : arr) {

System.out.println(num);

}

多维数组

Java多维数组是数组的嵌套结构,通过数组元素存储数组实现。二维数组常用,声明如int[][] arr,可动态创建new int[3][4]或静态初始化{{1,2},{3}}。每行长度可不同,适用于矩阵运算、表格数据等场景,通过双重循环遍历操作。

二维数组声明与初始化

int[][] matrix1 = new int[3][3]; // 3行3列

int[][] matrix2 = {{1,2}, {3,4,5}}; // 不规则数组

遍历二维数组

for (int i = 0; i < matrix2.length; i++) {

for (int j = 0; j < matrix2[i].length; j++) {

System.out.print(matrix2[i][j] + " ");

}

System.out.println();

}

数组的默认值

基本类型:int默认为0,boolean默认为false。引用类型(如String):默认为null。

数组工具类 Arrays

排序:Arrays.sort(arr)二分查找:Arrays.binarySearch(arr, key)填充值:Arrays.fill(arr, 5)转为字符串:Arrays.toString(arr)

int[] arr = {3, 1, 4};

Arrays.sort(arr); // arr变为[1, 3, 4]

System.out.println(Arrays.toString(arr)); // 输出[1, 3, 4]

数组拷贝

Java数组拷贝常用System.arraycopy()或Arrays.copyOf(),支持浅拷贝。深拷贝需遍历复制或序列化,确保数据独立,避免引用共享问题。

System.arraycopy()

int[] src = {1, 2, 3};

int[] dest = new int[3];

System.arraycopy(src, 0, dest, 0, src.length);

Arrays.copyOf()

int[] newArr = Arrays.copyOf(src, src.length);

常见错误

空指针异常:未初始化的数组直接访问。

int[] arr;

System.out.println(arr[0]); // 编译错误!

索引越界:访问不存在的索引。

int[] arr = {1, 2};

System.out.println(arr[2]); // 运行时抛出ArrayIndexOutOfBoundsException

数组与集合的区别

数组:长度固定,可存基本类型和对象。集合(如ArrayList):长度动态增长,只能存对象。

示例代码汇总

public class ArrayDemo {

public static void main(String[] args) {

// 初始化与遍历

int[] arr = {5, 3, 8};

for (int num : arr) {

System.out.print(num + " "); // 输出5 3 8

}

// 二维数组

int[][] matrix = {{1,2}, {3,4,5}};

System.out.println(matrix[1][2]); // 输出5

// 使用Arrays工具类

Arrays.sort(arr);

System.out.println(Arrays.toString(arr)); // 输出[3, 5, 8]

}

}

总结

Java数组是存储固定数量同类型元素的数据结构,属于对象类型。声明数组需指定元素类型和方括号,如int[] arr或int arr[],推荐前者规范写法。创建数组必须使用new关键字指定长度,例如int[] arr = new int[5],此时元素会根据数据类型自动初始化默认值(整型0,浮点0.0,布尔false,对象null)。也可直接初始化具体元素:String[] names = {"Alice", "Bob"}。

数组通过从0开始的索引访问元素,arr[0]表示首个元素。数组长度由length属性获取(非方法),创建后长度不可变。若需扩容需新建数组并复制数据,可使用System.arraycopy()方法或Arrays.copyOf()工具类。

多维数组本质是"数组的数组",如二维数组int[][] matrix = new int[3][4]创建3行4列结构,每行可独立指定长度形成锯齿数组。遍历数组通常使用for循环配合索引,增强for循环for(int num : arr)适合只读场景。

数组在内存中以连续空间存储,查询效率高但增删元素效率低。需注意避免ArrayIndexOutOfBoundsException越界异常。实际开发中若需动态扩容,可优先考虑ArrayList集合。数组作为基础数据结构,广泛用于算法实现、矩阵运算及批量数据处理场景。

相关推荐

天龙八部宝石评分表大全
万博365下载

天龙八部宝石评分表大全

⏳ 07-29 👁️ 7886
女巫 The Witches
万博365下载

女巫 The Witches

⏳ 08-10 👁️ 8216