# 数组 是什么?- Java 版 *Java技术栏* 数组 ( Array ) 是一种 数据结构 ,从名字中可以知道是 数字的组合 。本文使用 Java 演示数组使用。 ## 目录 [TOC] ## 数组就像是数列  数组是一种数据结构,从名字中可以知道是数字的组合,可以看作是多个数据的集合。它由多个元素组成,每个元素都可以通过一个索引(或称为下标)来访问。在很多语言中,这些元素可以是同一种类型,也可以是不同类型的,对于Java这种强类型语言,其基本库中提供的数组只能有一种类型。数组在内存中以连续的方式存储,这使得访问和检索数据非常快速和高效。 就像数列一样,在高中我们都学习过数列,数列中的元素下标其实就是数组的索引,数值其实就是数列中的数值,两者很相似,大家早初次接触当成数列去理解就好! ### 如何使用数组呢? 我们已经知道,数组中包含很多的元素,同时其具有索引,但是目前我们只是说到了数组这个东西,并没有在实际案例中去体会,下面就是开始进行案例演示。 PS: 本次案例演示基于Java #### 创建数组 在下面的代码中,我们使用简单的演示,为大家展示如何创建一个空数组的三种方式,这三种方式都是一样的。 ```java public class MAIN { public static void main(String[] args) { // 创建空数组 直接指定{}为空 final int[] ints0 = new int[]{}; // 直接指定数组中有 0 个元素 final int[] ints1 = new int[0]; // 直接指定 {} 为空 第一个写法的简写 final int[] ints2 = {}; } } ``` 如果希望创建一些具有指定数值的数组该怎么做呢?在下面的案例中,我们演示了如何创建具有指定元素值的数组,以及指定元素数量的数组。 ```java public class MAIN { public static void main(String[] args) { // 创建具有3个元素的数组 其中元素分别为 1 2 3 final int[] ints0 = {1, 2, 3}; final int[] ints1 = new int[]{1, 2, 3}; // 创建一个具有3个元素的数组 但是不进行数值的指定 那么其中的元素就是 0 0 0 final int[] ints2 = new int[3]; } } ``` #### 查看数组 当数组被创建之后,它就是一个可以随时被打印与使用的对象,还记得吗?我们在上面学习过索引的概念,所以我们可以使用索引来获取到元素,元素获取到之后,就可以通过 `System.out.println()` 这个函数打印出来数值啦,那么我们可以像下面一样查询元素。 ```JAVA public class MAIN { public static void main(String[] args) { // 创建具有3个元素的数组 其中元素分别为 1 2 3 final int[] ints0 = {1, 2, 3}; // 获取到第 1 个元素 需要注意的是 第一个元素的索引为0 他们是从0开始的 System.out.println("数组中的第1个元素 = " + ints0[0]); System.out.println("数组中的第2个元素 = " + ints0[1]); System.out.println("数组中的第3个元素 = " + ints0[2]); } } ``` #### 修改数组 既然索引可以获取到元素,那么是否可以通过索引来修改元素呢?是的,我们可以理解为直接用索引获取到的是数组中的位置,这个位置中的值,可以直接被修改,下面是一个示例。 ```java public class MAIN { public static void main(String[] args) { // 创建具有3个元素的数组 其中元素分别为 1 2 3 final int[] ints0 = {1, 2, 3}; System.out.println("第2个元素被修改之前的值 = " + ints0[1]); // 在这里我们直接使用索引和等于号来进行修改就可以啦 ints0[1] = 1024; System.out.println("第2个元素被修改之后的值 = " + ints0[1]); } } ``` #### 更多函数 ``` Arrays.sort():对数组进行排序,可以按照升序或降序排列。 Arrays.binarySearch():在有序数组中查找指定元素的索引,如果没有找到则返回负数。 Arrays.copyOf():复制数组,可以指定新数组长度。 Arrays.fill():将数组中的所有元素都设置为指定值。 Arrays.equals():比较两个数组是否相等。 Arrays.asList():将数组转换为 List。 Arrays.stream():将数组转换为 Stream。 System.arraycopy():复制数组的一部分到另一个数组中。 Arrays.parallelSort():使用多线程对数组进行排序。 ``` ------ ***操作记录*** 作者:[root](http://www.lingyuzhao.top/index.html?search=1 "root") 操作时间:2023-12-08 13:06:17 星期五 事件描述备注:保存/发布 [](如果不需要此记录可以手动删除,每次保存都会自动的追加记录)