学习Java中的数组

91 阅读4分钟

Java中的数组

一个具有熟悉名称的相关数据元素的集合被称为数组。我们可以用一个数组来表示一组学生的总分。一个特定的值,它是一个索引号或分配给数组名称的下标,并存储在数组名称后的方括号[]中,并声明数组中的变量。

简介

任何变量类型都可以定义数组。完整的数值集合是一个数组,而单个数值是一个元素。一个数组就像一个有序的变量列表,具有统一的命名机制。

数组的名称不会改变,但变量可以改变。数组可以用来记录一个有序的项目或事物的列表。使用数组的好处是很容易使用索引号访问数组中的任何元素,通过数组同时存储许多元素。

前提条件

在学习本教程之前。

  • 如果你对Java有基本的了解,那就最好了。
  • 你应该能够运行和编译Java程序。
  • 你应该已经安装了NetbeansIntellij等IDE,并且能够使用它们。

创建一个数组

在使用之前,数组的构建和声明就像计算机内存中的其他变量一样。

创建数组的过程有三个步骤。

  1. 声明数组。
  2. 创建一个内存位置。
  3. 将数值添加到内存位置。

数组的声明

在Java中,数组的声明有两种形式。

type arrayname[ ];

type [ ] arrayname;

例子。

float mean[ ];     //type arrayname[]
int[ ] marks;      //type[] arrayname

创建一个数组

在声明了一个数组后,需要在内存中创建它。

arrayname= new type[size];

例子。

number= new int[5];
mean= new float[7];

上面一行为数组的数字和平均值创建了内存位置,并将它们赋值为int和float。

一个数组的长度是索引变量的数量,也就是数组类型后面方括号中的数字。索引变量可以是任何类型的,并且在一个数组中具有相同的基本类型。

一个数组也可以同时声明和创建,即。

float mean[ ]=new float[7];

数组的初始化

现在的最后阶段是向创建的数组添加或赋值。这就是初始化的过程。

初始化是使用数组的下标和设置值来完成的。下标必须在创建的内存位置内,它们不能超过。

初始化过程从0开始,作为第一个下标,在(n-1)结束,其中n 是为该数组分配的内存。

arrayname[subscript]= value;

例子。

mean[0] =45;
mean[1] =64;
mean[2] =78;
mean[3] =92;
mean[4] =15;
mean[5] =16;
mean[6] =04;

我们也可以用普通变量的声明方式来初始化数组,也就是说。

type arrayname[ ]= {list of values};

数组初始化器由一个用逗号分隔的数值列表组成,并由大括号括起来。数组的大小没有被指定。编译器将为列表上的所有元素分配足够的内存。

float mean [ ]= {45, 64, 78, 92, 15, 16, 04};

我们也可以使用for循环来进行数组初始化。

for(x=0; x<10; x++)
average[x]= (float)x;

循环会将数组的平均值初始化为0到9的数值。

数组中分配的大小被存储在一个名为length的变量中**。**一个数组的长度,比如说a ,是通过a.length 得到的。

int asize = a.length;

在没有设置数组大小的情况下,实例变量length默认设置为创建的数组的大小。一旦一个数组被创建,它的长度就不能被改变。只有通过创建一个新的数组并改变数组的设定大小。

一维和二维数组

一维数组也被称为单维数组,它只使用一个下标[]。

第一个元素将被分配到第0个索引,而最后一个元素将被存储在(length-1)索引中。一个单维数组将只有一个任何数据类型的下标。数组的值必须与初始化时的数据类型相同,否则在存储过程中会显示一个编译时错误。

下面是一个单维数组的例子。

 import java.util.*;
 public class OneDimensionalArray {
   public static void main(String[] args) {
     int[] marks = new int[] { 51, 27, 73, 94, 55, 60, 78, 48, 49, 19 };
     System.out.println(Arrays.toString(marks));
   }
 }

上面代码的输出是:[51, 27, 73, 94, 55, 60, 78, 48, 49, 19]

二维数组使用一个以上的下标,代表行和列。二维数组使我们能够在一个表中存储数值。

第一个下标代表行的数量,而第二个下标代表列的数量。

创建一个二维数组。

public class MultiDimensionalArray{

     public static void main(String []args){
        int marks[][] = new int[3][4];
        
        marks[0][0]=20;
        marks[0][1]=90;
        marks[0][2]=56;
        marks[0][3]=34;
        
        marks[1][0]=47;
        marks[1][1]=78;
        marks[1][2]=12;
        marks[1][3]=34;
        
        marks[2][0]=74;
        marks[2][1]=98;
        marks[2][2]=32;
        marks[2][3]=25;
        
        System.out.println(marks[0][0] +"" +marks[0][1] +"" + marks[0][2] +"" +marks[0][3] +"");
        System.out.println(marks[1][0] +"" +marks[1][1] +"" + marks[1][2] +"" +marks[1][3] +"");
        System.out.println(marks[2][0] +"" +marks[2][1] +"" + marks[2][2] +"" +marks[2][3] +"");
     }
}

创建一个有12个整数值的表。多维数组中的每个元素都应该与声明的基本类型相同。

求一个多维数组的长度。

import java.util.*;
public class MultidimensionalArray {
    public static void main(String[] args) {

        
        int[][] a = {
            {90, 62, 4}, 
            {86, 45, 67, 56}, 
            {7}, 
        };
      
        
        System.out.println("Length of row 1: " + a[0].length);
        System.out.println("Length of row 2: " + a[1].length);
        System.out.println("Length of row 3: " + a[2].length);
    }
}

这个程序的输出将是。

Length of row 1: 3
Length of row 2: 4
Length of row 3: 1

阵列中某行的大小相当于该行的总数值。

对数组进行排序

数组中的sort 方法是用来将数组中的元素按降序或升序重新排列。

import java.util.Arrays;
 
import java.util.Collections;
 public class Sorting_arrays {
 
    public static void main(String[] args) {
 
     Integer [] sorting_array = {34, 65, 75, 84, 76,45,120};
        System.out.println("Array before sorting: " + Arrays.toString(sorting_array)+"\n");
 
        Arrays.sort(sorting_array, Collections.reverseOrder());
        System.out.println("Sorted array in descending order: " + Arrays.toString(sorting_array)+"\n");
        Arrays.sort(sorting_array);
        System.out.println("Sorted Array in ascending order: " + Arrays.toString(sorting_array));
    }
 }

对数组进行排序后,其输出结果如下。

输出。排序前的数组。[34, 65, 75, 84, 76, 45, 120]

以降序排序的数组。[120, 84, 76, 75, 65, 45, 34]

排序后的数组以升序排列。[34, 45, 65, 75, 76, 84, 120]

为了对数组进行降序排序,你可以使用从集合中导入的reverseorder() 方法。

注意:反向排序必须涉及到集合方法。

使用多维数组,我们可以创建一个十乘十的乘法表(也就是十行十列)。

public class Main {
  
   public static void main(String[] args)
   {
      int[][]   multiplicationtable= new int[10][10];   //array name is multiplicationtable
      int row = 1, column = 1;
       for(int a = 0; a < multiplicationtable.length; a++)
      {
         for(int b = 0; b < multiplicationtable[a].length; b++)
         {
            multiplicationtable[a][b] = row * column;
            column = column + 1;
         }
         row = row + 1;
         column = 1;
      }
      for(int a = 0; a < multiplicationtable.length; a++)
      {
         for(int b = 0; b < multiplicationtable[a].length; b++)
         {
            System.out.print(" " + multiplicationtable[a][b] + "\t| ");
         }
         System.out.print("\n");
      }
   }
}

输出。

 |1	|  2	|  3	|  4	|  5	|  6	|  7	|  8	|  9	|  10	| 
 |2	|  4	|  6	|  8	|  10	|  12	|  14	|  16	|  18	|  20	| 
 |3	|  6	|  9	|  12	|  15	|  18	|  21	|  24	|  27	|  30	| 
 |4	|  8	|  12	|  16	|  20	|  24	|  28	|  32	|  36	|  40	| 
 |5	|  10	|  15	|  20	|  25	|  30	|  35	|  40	|  45	|  50	| 
 |6	|  12	|  18	|  24	|  30	|  36	|  42	|  48	|  54	|  60	| 
 |7	|  14	|  21	|  28	|  35	|  42	|  49	|  56	|  63	|  70	| 
 |8	|  16	|  24	|  32	|  40	|  48	|  56	|  64	|  72	|  80	| 
 |9	|  18	|  27	|  36	|  45	|  54	|  63	|  72	|  81	|  90	| 
 |10	|  20	|  30	|  40	|  50	|  60	|  70	|  80	|  90	|  100| 

总结一下

我们已经通过一些例子来更好地理解数组。我们也看到了处理数组的不同方法。数组的排序可以帮助安排数据,将数据按升序或降序排序。