# 数组 是什么?- 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 星期五
事件描述备注:保存/发布
[](如果不需要此记录可以手动删除,每次保存都会自动的追加记录)