Java中的数组
一个具有熟悉名称的相关数据元素的集合被称为数组。我们可以用一个数组来表示一组学生的总分。一个特定的值,它是一个索引号或分配给数组名称的下标,并存储在数组名称后的方括号[]中,并声明数组中的变量。
简介
任何变量类型都可以定义数组。完整的数值集合是一个数组,而单个数值是一个元素。一个数组就像一个有序的变量列表,具有统一的命名机制。
数组的名称不会改变,但变量可以改变。数组可以用来记录一个有序的项目或事物的列表。使用数组的好处是很容易使用索引号访问数组中的任何元素,通过数组同时存储许多元素。
前提条件
在学习本教程之前。
创建一个数组
在使用之前,数组的构建和声明就像计算机内存中的其他变量一样。
创建数组的过程有三个步骤。
- 声明数组。
- 创建一个内存位置。
- 将数值添加到内存位置。
数组的声明
在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|
总结一下
我们已经通过一些例子来更好地理解数组。我们也看到了处理数组的不同方法。数组的排序可以帮助安排数据,将数据按升序或降序排序。