1. 程式人生 > >Java 陣列宣告與初始化

Java 陣列宣告與初始化

引言

  學習了好久的java,每次要寫陣列的宣告和初始化程式碼,總是理不清。最近又碰到了一次這種情況。這次拿出《Thinking In Java》好好總結一翻。

陣列宣告

  對於陣列的宣告其實都沒多大問題,推薦的寫法是使用 資料型別 + [] + 陣列名稱的方式,因為這種方式可以很清楚的表明這是某一種型別的陣列。例如,宣告一整數型別的陣列。

1 int[] a;

陣列初始化

  其實出現問題最多的就是陣列的初始化。陣列的初始化分為三種方式,再遇到初始話的時候,總是會搞不清楚。根據我個人的理解,陣列的初始化操作分為三種方式。

  第一種:特殊初始化,不用new關鍵字完成,在陣列宣告的同時完成初始化操作,也被稱其為靜態初始化。主要原因是因為採用這種初始化的方式,陣列的儲存空間的分配是由編譯器完成的。

     下面以整數陣列初始化為例,完成一個靜態陣列初始化:

1  int[] a = {1,2,3};
2 Integer[] b = {
3                 new Integer(1), 
4                 new Integer(2), 
5                 3             //Autoboxing
6         };

  第二種:先使用new關鍵字建立陣列,然後再分別為陣列中的元素賦值,完成初始化操作。(注:如果陣列元素型別為基本資料型別,在完成new 操作之後,陣列中的元素會自動初始化為空值,可以直接使用,但是陣列元素為引用型別,在完成new操作之後,沒有給引用型別賦值,就直接使用陣列中的元素,會產生執行時異常。)

    下面還是以整數陣列初始化為例2,完成陣列初始化:

1         int[] a = new int[2];   //需要指定陣列的長度
2         a[0] = 1;
3         a[1] = 2;

  第三種:使用new關鍵字建立陣列,同時為陣列中的元素賦值,完成出事化操作。

複製程式碼
1         int[] a = new int[]{1,2,3}; //與第二種方法不同,這裡new不需要指定陣列的長度,陣列長度由其後的初始化操作確定
2         
3         int[] b = new int[]{
4                 new Integer(1), 
5                 new Integer(2),
6                 3
7         };
複製程式碼