Java 数组


2022年1月10日, Learn eTutorial
2005

在这个 Java 教程中,您将学习关于名为数组的数据结构的一切。借助简单有趣的示例,您将了解如何通过声明、初始化和访问数组中的变量来操作数组。

什么是数组?

数组是 Java 中最简单、最基本的数据结构。数据结构,顾名思义,是数据在内存中存储的一种特定结构。很明显,有组织的内存工作效率更高。所以在 Java 中,我们有几种存储数据的方式,可以线性存储、堆栈存储或树状结构存储。

数组是一种线性数据结构,它在连续的内存中存储一组有限的相同数据类型的元素。Java 中的数组使用索引来存储和检索元素,并且它总是存储同类数据。

Java Array

这就是一个数组的样子。在这里,该数组能够存储六个数据片段,索引从零到五。所以这个数组的长度是 6,并且始终是固定的。

如何在 Java 中声明数组?

我们从之前的教程中学到了如何在 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 中分配数组

声明一个变量并不意味着数组已经在内存中分配。它只是告诉编译器声明的变量是一个数组。那么让我们来理解一下数组在 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 中初始化数组

我们已经看到了如何声明和分配数组。现在让我们看看如何用元素初始化数组。初始化可以通过两种方式完成;

  1. 在声明时初始化数组

    Java 提供了在声明时初始化数组的功能。这可以通过将元素列在大括号内,并用逗号分隔来完成。数组初始化的语法是

    
    data_type[] array_name = {value_1st_element,value_2nd_element,3rd.....};
     
    

    例如,

    
    String[] colors = {"VIOLET", "INDIGO", "BLUE", "GREEN","YELLOW", "ORANGE", "RED"};
     
    

    当您观察上面的示例时,您可能会注意到没有提到数组的大小。在这里,编译器通过计算数组初始化的元素数量来自动确定数组的大小。在这种情况下,数组的长度是 7,因为数组中包含了七种颜色。

  2. 使用数组索引初始化

    另一种初始化数组的方法是使用索引号。内存位置总是与一个称为索引号的数字相关联,这有助于轻松分配和检索数组元素。例如,

    
    //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 Array

在 Java 中访问数组的元素

现在是时候讨论如何在 Java 中访问数组元素了。数组元素可以通过两种方式访问

  1. 使用索引

    在初始化时,我们已经看到了索引在 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
    
    
  2. 使用索引和循环

    现在假设你的数组包含 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
    
    

数组长度和 ArrayIndexOutToBoundException

上面的例子向您展示了如何遍历数组。您可能注意到了 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 个位置。

使用 for-each 循环遍历数组

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

Java 中的多维数组

到目前为止,我们一直在讨论操作一维数组。通常,具有多于一行和一列的数组被称为多维数组。由于多维数组中的每个元素本身就是一个数组,我们可以说多维数组是数组的数组。它可以是二维数组、三维数组或 n 维数组。那么让我们讨论一个二维数组来理解多维数组是如何工作的。二维数组由行和列组成,就像矩阵一样。它可以被认为是一个多维数组。

二维数组的声明

声明语句有两个连续的索引,一个表示行数,另一个表示列数,如下所示


data_type[][] array_name = new data_type[row] [column];
int[][] table= new int[2][3];

 

在这里, table 是一个二维数组,它在 2 行 3 列中存储了 6 个整数值。在声明二维数组时,行大小和列大小都必须用方括号括起来。每个元素的分配将是

2D Array

二维数组的初始化

初始化可以在声明期间完成,其形式为


data_type[row] [column] array_name = {{value_1st_element,value_2nd_element,3rd.....},{.........}};
 

例如,int[2][3] table ={ {10,20,30},{40,50,60} }

初始化后的二维数组可以最好地可视化如下。

Array

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