数组是什么?

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

例如,

int myID;

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

数组声明

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

int[] myID;

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

int myID[];

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

// 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的数组对象

new ArrayDataType[Arraylength];

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

new int[5];

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

int[] myID = new int[5];

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

int[] myID = new int[5]; // Create an  array object
Object obj  = myID;              // A  valid  assignment

显式数组初始化

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

// Initialize the array at the time of declaration 
int[] myID = {1, 2, 3, 4, 5};

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

// A  comma   after the   last  value 5  is valid.
int[] myID = {1, 2, 3, 4, 5, };

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

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

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

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

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

增强for循环数组

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

for(DataType e  : array)  {

}

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

int[] numlist = {1, 2, 3};
for(int num : numlist)  { 
   System.out.println(num);
}

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

int[] numlist = {1, 2, 3};
for(int i = 0; i < numlist.length; i++) { 
   int num = numlist[i]; 
   System.out.println(num);
}

数组对象的类

数组是对象。Object类中的getClass()方法返回类的引用。
以下代码说明如何获取数组的类名。

public class Main {
  public static void main(String[] args) {
    int[] iArr = new int[1];
    int[][] iiArr = new int[1][1];
    int[][][] iiiArr = new int[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));
  }
  public static String getClassName(Object obj) {
    Class c = obj.getClass();
    String className = c.getName();
    return className;
  }
}

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

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

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


分类导航
点击按住视频可拖动

缩小

关闭

  • 正在学习
  • 北京总部地址:北京市海淀区西三旗桥东建材城西路85号神州科技园B座三层尚学堂
  • 咨询电话:400-009-1906 010-56233821
  • Copyright 2007-2015 北京尚学堂科技有限公司
  • 京ICP备13018289号-1 京公网安备11010802015183