Java基础指南之Arrays数组声明创建和基础操作详解
数组是Java中一种用来存储固定大小的同类型元素的数据结构。数组可以看作是数据元素的一个容器,这些元素在内存中是连续存储的,这使得访问数组中的元素非常快速。以下为数组的特性:
- 固定大小:数组一旦创建,其长度就不能改变。
- 连续内存:数组的元素在内存中是连续存储的,这有助于提高访问速度,但也意味着创建大型数组可能会消耗大量内存。
- 同类型元素:数组中的所有元素必须是相同的数据类型。
数组的声明和创建
声明数组
数组声明的一般形式如下:
type[] arrayName;
type:是数组中元素的数据类型,可以是任何基本数据类型或对象类型;arrayName:是数组的名称(参照标识符起名规则)。
创建数组
数组可以通过以下几种方式创建:
声明时初始化:
int[] numbers = {1, 2, 3, 4, 5};
使用new关键字:
int[] numbers = new int[5]; // 创建一个长度为5的整数数组,所有元素默认初始化为0
使用数组工厂方法(Java 8及以上):
int[] numbers = Arrays.copyOf(new int[]{1, 2, 3, 4, 5}, 5);
获取数组长度
可以通过.length属性获取数组的长度:
// 创建数组并声明
int[] numbers = {100, 200, 300, 400, 500};
// 获取数组的长度
int arraySize = numbers.length;
System.out.println("numbers的长度是: " + arraySize); // numbers的长度是: 5
访问数组元素
数组元素可以通过索引访问。索引从0开始,到数组长度减1结束。:
// 创建数组并声明
int[] numbers = {100, 200, 300, 400, 500};
// 获取第一个元素
int firstElement = numbers[0];
System.out.println("numbers的第一个元素: " + firstElement); // numbers的第一个元素: 100
// 获取最后一个元素
int lastElement = numbers[numbers.length - 1];
System.out.println("numbers的最后一个元素: " + lastElement); // numbers的最后一个元素: 500
遍历数组
数组可以通过循环进行遍历,有以下两种遍历方式:
for循环:
// 创建数组并声明
int[] numbers = {100, 200, 300, 400, 500};
// for循环
for (int i = 0; i < numbers.length; i++) {
System.out.println("索引 "+i+"的元素: "+numbers[i]);
}
增强for循环(也称为“for-each”循环):
// 创建数组并声明
int[] numbers = {100, 200, 300, 400, 500};
// 增强for循环
for (int number : numbers) {
System.out.println(number);
}
多维数组
多维数组是数组的数组,即数组元素本身也是数组。
- 多维数组在Java中主要用于处理数据结构具有多个维度的场景,如矩阵运算、棋盘游戏、图像处理等。
- 在Java中,最常见的
是二维数组,但理论上可以创建任意维度的数组。
二维数组
二维数组可以形象地理解为一个表格,其中每一行是一个一维数组,所有的行构成了一个二维数组。
定义和初始化二维数组:
// 定义并初始化一个3行4列的整型二维数组
int[][] numbers = new int[3][4];
// 直接初始化二维数组
int[][] initializedNumbers = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
};
// 或者混合使用
int[][] mixedInitialization = new int[3][];
mixedInitialization[0] = new int[]{1, 2, 3, 4};
mixedInitialization[1] = new int[]{5, 6, 7, 8};
mixedInitialization[2] = new int[]{9, 10, 11, 12};
访问二维数组元素:
// 直接初始化二维数组
int[][] numbers = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
};
// 访问二维数组元素
int value = numbers[1][2]; // 获取第二行第三列的值,数组索引从0开始
// 修改二维数组元素
numbers[0][0] = 100; // 改变第一行第一列的值
遍历二维数组:
遍历多维数组通常需要使用多层嵌套循环,而对于更高维度的数组,访问和操作的复杂度也会相应增加。
// 直接初始化二维数组
int[][] numbers = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
};
// 使用嵌套循环遍历二维数组
for (int i = 0; i < numbers.length; i++) {
for (int j = 0; j < numbers[i].length; j++) {
System.out.print(numbers[i][j] + " "); // 打印每个元素
}
System.out.println(); // 换行显示每行结果
}
更高维度数组
更高维度的数组原理类似,例如三维数组可以想象为一组二维数组,每层都可以是一个二维数组。
// 定义一个3x3x3的三维整型数组 int[][][] threeDimensionalArray = new int[3][3][3]; // 初始化一个三维数组 threeDimensionalArray[0][1][2] = 100; // 给第一层第二行第三列赋值 // 访问三维数组元素 int value3D = threeDimensionalArray[0][1][2];
数组相关方法(Arrays工具类)
java.util.Arrays 是Java标准库中一个非常重要的工具类,提供了对数组进行排序、填充、比较、搜索以及转换等多种操作的功能。以下是java.util.Arrays类中的一些常用方法及其详细解释:
数组排序
sort():对给定的一维数组进行排序。
int[] unsortedArray = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3};
// 对整型数组进行升序排序
Arrays.sort(unsortedArray);
sort(T[] array, Comparator<? super T> c):对对象数组按照自定义比较器进行排序。
填充方法
fill():将指定值填充到数组的所有元素或部分元素。
// 创建一个长度为5的整型数组 int[] arr = new int[5]; // 使用Arrays.fill()方法填充数组 Arrays.fill(arr, 9); // 将数组所有元素设为9
比较方法
equals():比较两个数组是否相等,即元素相同且顺序一致。
int[] numbers1 = {100, 200, 300, 400, 500};
int[] numbers2 = {100, 200, 300, 400, 500};
boolean arraysEqual = Arrays.equals(numbers1, numbers2); // 比较两个数组是否完全相等
deepEquals():对于对象数组,进行深度比较,检查每个元素是否相等(不只是引用相等)。
搜索方法
binarySearch():在已排序的数组中使用二分查找算法查找指定元素的索引。
int[] unsortedArray = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3};
// 查找整型数组中的目标值
int index = Arrays.binarySearch(unsortedArray, 5);
转换方法
asList():将数组转换为列表(List)视图,但需要注意返回的List不是可变的,不能添加或删除元素。
String[] stringArray = {"首页", "新闻", "关于我们", "联系我们"};
List<String> list = Arrays.asList(stringArray); // 将字符串数组转换为列表
复制方法
copyOf() 和 copyOfRange():复制数组的一部分或全部。
int[] numbers = {100, 200, 300, 400, 500};
int newSize = numbers.length;
// 复制数组并指定新的长度
int[] copiedArray = Arrays.copyOf(numbers, newSize);
System.out.println(Arrays.toString(copiedArray)); // 输出: [100, 200, 300, 400, 500]
String[] objectArray = {"A", "B", "C","D","E","F","G"};
int start = 0;
int end = 4;
String[] clonedStringArray = Arrays.copyOfRange(stringArray, start,end);
System.out.println(Arrays.toString(clonedStringArray)); // 输出: [B, C, D]
copyOf() 在处理基本类型数组时可以实现深拷贝,但对于对象数组,只复制引用,不复制对象内容。如果需要对象数组的深拷贝,需要自行实现或利用序列化等手段。
打印数组
toString():将数组转换为易于阅读的字符串形式。
int[] numbers = {100, 200, 300, 400, 500};
System.out.println(Arrays.toString(numbers)); // 将数组转换为字符串表示形式以便打印
到此这篇关于Java基础指南之Arrays数组声明创建和基础操作详解的文章就介绍到这了,更多相关Java Arrays数组操作内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
eclipse springboot工程打war包方法及再Tomcat中运行的方法
这篇文章主要介绍了eclipse springboot工程打war包方法及再Tomcat中运行的方法,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下2019-08-08
Java Spring ApplicationEvent 代码示例解析
本文解析了Spring事件机制,涵盖核心概念(发布-订阅/观察者模式)、代码实现(事件定义、发布、监听)及高级应用(异步处理、事务绑定、执行顺序),对Java Spring ApplicationEvent概念相关知识感兴趣的朋友一起看看吧2025-06-06


最新评论