在这个 Java 教程中,您将学习关于名为数组的数据结构的一切。借助简单有趣的示例,您将了解如何通过声明、初始化和访问数组中的变量来操作数组。
数组是 Java 中最简单、最基本的数据结构。数据结构,顾名思义,是数据在内存中存储的一种特定结构。很明显,有组织的内存工作效率更高。所以在 Java 中,我们有几种存储数据的方式,可以线性存储、堆栈存储或树状结构存储。
数组是一种线性数据结构,它在连续的内存中存储一组有限的相同数据类型的元素。Java 中的数组使用索引来存储和检索元素,并且它总是存储同类数据。

这就是一个数组的样子。在这里,该数组能够存储六个数据片段,索引从零到五。所以这个数组的长度是 6,并且始终是固定的。
我们从之前的教程中学到了如何在 Java 中声明一个变量。在 Java 中声明数组也与此类似,但有一些附加内容。数组变量持有多个相同类型的项。数组声明的一般语法是
data_type[] array_name;
其中,
data_type 代表数组类型,可以是任何原始数据类型,如 int、char、float、string 等,或任何 Java 对象。
array_name 是数组变量的名称,可以根据命名约定任意取名;
[] 是特殊符号,表示该变量是一个数组。
String[] colors;
例如
在这里,colors 是一个字符串类型的数组。
在 Java 中,数组声明也可以采用以下形式
String []colors; or
String colors[];
声明一个变量并不意味着数组已经在内存中分配。它只是告诉编译器声明的变量是一个数组。那么让我们来理解一下数组在 Java 中是如何分配的。语法是
data_type[] array_name = new data_type[array_size];
示例
String[] colors = new String[7] ;
这里我们声明了一个名为 colors 的数组,并借助 new 关键字在内存中分配了它们,大小指定为 7。数组的分配从 'null' 开始,因此该系列的最后一个元素将存储在 a[size -1]。在我们的示例中,数组的第一个元素将分配在 colors[0],最后一个元素将分配在 colors[6]。这里我们可以说数组长度或大小是 7 并且是固定的。
同样的声明和分配可以写成另一种形式,如下所示
String[] colors
colors = new String[7] ;
我们已经看到了如何声明和分配数组。现在让我们看看如何用元素初始化数组。初始化可以通过两种方式完成;
Java 提供了在声明时初始化数组的功能。这可以通过将元素列在大括号内,并用逗号分隔来完成。数组初始化的语法是
data_type[] array_name = {value_1st_element,value_2nd_element,3rd.....};
例如,
String[] colors = {"VIOLET", "INDIGO", "BLUE", "GREEN","YELLOW", "ORANGE", "RED"};
当您观察上面的示例时,您可能会注意到没有提到数组的大小。在这里,编译器通过计算数组初始化的元素数量来自动确定数组的大小。在这种情况下,数组的长度是 7,因为数组中包含了七种颜色。
另一种初始化数组的方法是使用索引号。内存位置总是与一个称为索引号的数字相关联,这有助于轻松分配和检索数组元素。例如,
//String array declaration
String[] colors = new String[7] ;
// Array initialization
colors[0] = “VIOLET”;
colors[1] = “INDIGO”;
colors[2] = “BLUE”;
colors[3] = “GREEN”;
colors[4] = “YELLOW”;
colors[5] = “ORANGE”;
colors[6] = “RED”;
初始化后的单维数组可以最好地可视化如下。

现在是时候讨论如何在 Java 中访问数组元素了。数组元素可以通过两种方式访问
在初始化时,我们已经看到了索引在 Java 中是如何工作的。类似地,要检索数组的元素,我们可以使用相同的索引技术,其语法如下
array_name[index_number];
请看下面的例子
class ArrayRainbow{
public static void main(String[] args) {
String[] colors = {"VIOLET", "INDIGO", "BLUE", "GREEN","YELLOW", "ORANGE", "RED"};
System.out.println("Accessing Elements of Array:");
System.out.println("Element at index of 0: " + colors[0]);
System.out.println("Element at index of 2: " + colors[2]);
System.out.println("Element at index of 4: " + colors[4]);
System.out.println("Element at index of 6: " + colors[6]);
}
}
输出将是
输出
Accessing Elements of Array: Element at index of 0: VIOLET Element at index of 2: BLUE Element at index of 4: YELLOW Element at index of 6: RED
现在假设你的数组包含 100 个元素,你想一次性访问所有元素。你该如何实现呢?是的,这时候我们的循环就派上用场了。我们可以使用循环来一次性访问并打印数组中的所有元素,如下例所示。
class ArrayRainbow{
public static void main(String[] args) {
String[] colors = {"VIOLET", "INDIGO", "BLUE", "GREEN","YELLOW", "ORANGE", "RED"};
System.out.println("Accessing Elements of Array using for loop");
for(int i=0;i
输出将是
输出
Accessing Elements of Array using for loop
VIOLET
INDIGO
BLUE
GREEN
YELLOW
ORANGE
RED
上面的例子向您展示了如何遍历数组。您可能注意到了 for 循环中指定的 length 属性。如果没有,那么在 Java 中,数组的 length 或 size 表示数组有多少个元素,可以使用 length 属性来确定。语法如下
array_name.length;
请看下面的例子
class ArrayRainbow{
public static void main(String[] args) {
String[] colors = {"VIOLET", "INDIGO", "BLUE", "GREEN","YELLOW", "ORANGE", "RED"};
//size of the array
int len = colors.length;
System.out.println("Length of the array is "+len);
System.out.println("Accessing Elements of Array using for loop");
for(int i=0;i<=len;i++)
{
System.out.println(colors[i]);
}
}
输出将是
输出
Length of the array is 7
Accessing Elements of Array using for loop
VIOLET
INDIGO
BLUE
GREEN
YELLOWORANGE
RED Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 7 out of bounds for length 7at ArrayRainbow.main(ArrayRainbow.java:14)
在上面的输出中,您可以看到一个 ArrayIndexOutOfBoundException。正如其名所示,当您搜索的元素超出了给定数组的索引限制时,就会发生这种情况。当您忘记考虑数组索引总是从 0 开始并在 n-1 结束这一事实时,就会发生错误。在上面的示例中,for 循环检查了第 7 个位置的元素,尽管数组索引的边界在第 6 个位置。
Java 提供了另一种更好的方式来遍历数组中的每个元素。这种方法被认为是遍历数组每个元素的最简单、最轻松的方式。为什么呢?因为它不需要计数器(length 属性),并且不会发生任何索引越界异常。语法是
for (datatype variable_name : array_name) {
...
}
上面的例子可以修改为
class ArrayRainbow{
public static void main(String[] args) {
String[] colors = {"VIOLET", "INDIGO", "BLUE", "GREEN","YELLOW", "ORANGE", "RED"};
for (String c : colors){
System.out.println(c);
}
}
}
输出将是
输出
VIOLET INDIGO BLUE GREEN YELLOW ORANGE RED
假设您想将数组中特定位置的元素更改为其他值。这在 Java 中可能吗?绝对可能。这里也利用索引方法,并用您期望的值重新初始化它。请看下面的程序
class ArrayRainbow{
public static void main(String[] args) {
String[] colors = {"VIOLET", "INDIGO", "BLUE", "GREEN","YELLOW", "ORANGE", "RED"};
colors[2]="BLACK";
colors[4]="WHITE";
for (String c : colors){
System.out.println(c);
}
}
}
输出
VIOLET INDIGO BLACK GREEN WHITE ORANGE RED
到目前为止,我们一直在讨论操作一维数组。通常,具有多于一行和一列的数组被称为多维数组。由于多维数组中的每个元素本身就是一个数组,我们可以说多维数组是数组的数组。它可以是二维数组、三维数组或 n 维数组。那么让我们讨论一个二维数组来理解多维数组是如何工作的。二维数组由行和列组成,就像矩阵一样。它可以被认为是一个多维数组。
声明语句有两个连续的索引,一个表示行数,另一个表示列数,如下所示
data_type[][] array_name = new data_type[row] [column];
int[][] table= new int[2][3];
在这里, table 是一个二维数组,它在 2 行 3 列中存储了 6 个整数值。在声明二维数组时,行大小和列大小都必须用方括号括起来。每个元素的分配将是

初始化可以在声明期间完成,其形式为
data_type[row] [column] array_name = {{value_1st_element,value_2nd_element,3rd.....},{.........}};
例如,int[2][3] table ={ {10,20,30},{40,50,60} }
初始化后的二维数组可以最好地可视化如下。

要了解更多关于多维程序的知识,请访问 java 程序。