数组是什么?

2018-08-03  本文已影响0人  北京尚学堂

数组是一个固定长度的数据结构,用于保存多个相同数据类型的值。在数据类型之后或在变量声明中的变量名称之后放置[],使变量成为数组。

例如,

1intmyID;

上面是一个简单的变量声明。 这里,int是数据类型,myID是变量名。

数组声明

上面的这个声明意味着myID变量可以保存一个整数值。如果要声明数组,可在上面的声明中的数据类型之后放置[],如下所示 -

1int[] myID;

使myID是一个数组变量。上面的声明应叫作“myID是一个int数组”。可以通过在变量名之后放置[]来使myID变量成为一个数组,像这样:

1intmyID[];

上述两个声明都是有效的。

不能在声明数组时指定数组可以保存的值的数量。可以声明一个数组来保存同数据类型的多个值。 以下是其它形式的数组声明示例:

1

2

3

4

5

6

7

8

// salary can  hold  multiple float  values 

float[] salary;

// name can  hold  multiple references to String objects

String[]  name;

// emp can  hold  multiple references to Employee objects

Employee[]   emp;

创建数组

数组创建的一般语法如下:

以下代码创建Arraylength长度类型为ArrayDataType的数组对象

1newArrayDataType[Arraylength];

要创建一个数组来存储5个int类型的值:

1newint[5];

在此表达式中,5是数组的长度,它也称为数组的维度。有多个维度的数组称为多维数组。还可以将数组的声明及其创建在一个语句中组合。

1int[] myID = newint[5];

因为所有数组都是对象,所以它们的引用可以分配给对象类型的引用变量。 例如,

1

2

int[] myID = newint[5]; // Create an  array object

Object obj  = myID;              // A  valid  assignment

显式数组初始化

当声明数组或使用new运算符创建数组对象时,可以显式初始化数组的元素。元素的初始值由逗号分隔,并用大括号{}括起来。

1

2

// Initialize the array at the time of declaration 

int[] myID = {1, 2, 3, 4, 5};

此代码创建长度为5的int数组,并将其元素初始化为1,2,3,4和5。数组的长度与数组初始化列表中指定的值的数量相同。逗号跟随初始化列表中每个值直到最后一个值。

1

2

// A  comma   after the   last  value 5  is valid.

int[] myID = {1, 2, 3, 4, 5, };

或者,可以初始化数组的元素,如下所示:

1int[] myID = newint[]{1, 2, 3, 4, 5};

对于引用类型数组,可以指定初始化列表中的对象列表。以下代码说明了String的数组初始化。

1String[] names = {newString("A"), newString("B")};

1String[] names = {"C",  "D"};

增强for循环数组

可以使用for-each循环与数组。语法如下:

1

2

3

for(DataType e  : array)  {

}

以下代码使用for-each循环打印int数组的所有元素:

1

2

3

4

int[] numlist = {1, 2, 3};

for(intnum : numlist)  { 

   System.out.println(num);

}

可以使用基本的for循环完成同样的事情,如下:

1

2

3

4

5

int[] numlist = {1, 2, 3};

for(inti = 0; i < numlist.length; i++) { 

   intnum = numlist[i]; 

   System.out.println(num);

}

数组对象的类

数组是对象。Object类中的getClass()方法返回类的引用。

以下代码说明如何获取数组的类名。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

publicclassMain {

  publicstaticvoidmain(String[] args) {

    int[] iArr = newint[1];

    int[][] iiArr = newint[1][1];

    int[][][] iiiArr = newint[1][1][1];

    String[] sArr = { "A", "B"};

    String[][] ssArr = { { "A"}, { "B"} };

    String[][][] sssArr = {}; // A 3D empty array of string

    // Print the class name for all arrays

    System.out.println("int[]:"+ getClassName(iArr));

    System.out.println("int[][]:"+ getClassName(iiArr));

    System.out.println("int[][][]:"+ getClassName(iiiArr));

    System.out.println("String[]:"+ getClassName(sArr));

    System.out.println("String[][]:"+ getClassName(ssArr));

    System.out.println("String[][][]:"+ getClassName(sssArr));

  }

  publicstaticString getClassName(Object obj) {

    Class c = obj.getClass();

    String className = c.getName();

    returnclassName;

  }

}

上面的代码生成以下结果。

1

2

3

4

5

6

int[]:[I

int[][]:[[I

int[][][]:[[[I

String[]:[Ljava.lang.String;

String[][]:[[Ljava.lang.String;

String[][][]:[[[Ljava.lang.String;

数组的类名以左中括号[开头。左括号的数量等于数组的维数。

上一篇 下一篇

猜你喜欢

热点阅读