55.一维数组初始化

在创建成功一个数组后,它将完成如下三个动作:
创建一个数组对象;
在内存中给数组分配存储空间;
给数组的元素初始化一个相应的数据类型的默认值。比如,将int类型的数组各个元素初始化成0,引用类型是null等。


public class ArrayDf {
 public static void main(String[] args) {
  int[] intArray;
  intArray = new int[10];
  System.out.println("第一个元素默认初始化值是:" + intArray[0]);
 }
}


在这个程序中,首先声明了一个int类型的数组,然后,利用new操作符创建了一个长度为10的数组,它将给这个数组分配存储空间并且初始化这些数组元素,在这里,讲给这些数组元素一个值0;最后,试图向控制台打印出这个数组第一个元素的值。

 

因为Java中的数组索引(下标)是从0开始的,所以,第一个数组元素对应的索引为0。所以可以通过intArray[0]的方式来得到数组的第一个元素的值。

编译并运行这个程序,将打印出如下的信息:
第一个元素默认初始化值是:0


其实,此时在这个数组中的任何一个元素的值都是0。读者可以自己修改数组的索引来获得不同的数组元素,注意这个数组的索引取值在0~9之间。

但是,通常情况下,我们定义一个数组并不是想用系统自动给的默认值,而是我们自己给数组的值。这个时候,就需要对数组进行初始化操作。也就是说,给数组的各个元素指定象赢得值。


数组的初始化操作分为两种方式:
静态初始化;
动态初始化。


下面我们来看这两种初始化方式的方法以及它们的区别。

 

静态初始化

 

 

所谓静态初始化,就是在定义数组的时候就对数组进行初始化,如下:
 int k[] = {1,3,5,7,9};

 

 


在这个例子中,定义了一个int类型的数组k,并且用大括号中的数据对这个数组进行了初始化,各个数据之间用“,”分割开。

 

此时数组的大小由大括号中的用于初始化数组的元素个数决定,注意不要在数组声明中指定数组的大小,否则将会引起错误。

 

在这个例子中,我们将数组声明、数组的创建以及数组的初始化都放在了同一条语句中,在这边并没有使用到new来创建这个数组。


来看一个静态初始化的例子:

public class StaticInitArray {
 public static void main(String[] args) {
  int a[] = { 1, 3, 5, 7, 9, 11 };
  for (int i = 0; i < a.length; i++) {
   System.out.println(a[i]);
  }
 }
}


在这个例子中,利用静态方式对数组进行初始化。这个数组的长度是数组中的元素的个数:6。然后用一个for循环将数组的各个元素取出来打印到控制台。程序执行的结果如下:
1
3
5
7
9
11


注意在这边用到了前面所论述的用于获得数组长度的方法:使用数组的length属性,用它来获得数组的长度。


在Java中,还可以利用静态初始化的方法来初始化一个匿名的数组,方法如下:
 new type[] {… …}
例如:new String[] {“abc”,”cde”,”efg”}


可以通过这种方法来重新初始化一个数组,例如,有一个String类型的数组,它通过下面的静态方式被初始化:
 String[] s = {“tom”,”jerry”,”mickey”};


此时,可以对s这个数组变量进行重新初始化,如下:
 s = new String[]{“abc”,”cde”,”efg”};


这条语句等同于下面的两条语句:
 String[] temp = {“abc”,”cde”,”efg”};
 s = temp;

 

动态初始化

 

所谓的动态初始化,就是将数组的定义和数组的初始化分开来进行。

 

 

 


例如,对数组中的元素一个个的分别指定它们各自对应的值:
int a = new int[3];
a[0] = 1;
a[1] = 10;
a[2] = 100;


或者用一个循环来对一个数组一次赋值,如:
 int[] a;
 a = new int[10];
 for (int i = 0;i<10;i++){
  a[i] = 2*i+1;
 } 


再来看一个char类型数组的动态初始化的例子:
    char[] s;
    s = new char[26];
    for ( int i=0; i<26; i++ ) {
      s[i] = (char) ('A' + i);
    }

 

你可能感兴趣的:(初始化)