1. 程式人生 > >Java建立陣列的幾種方式

Java建立陣列的幾種方式

借鑑http://blog.csdn.net/u014199097/article/details/50551731

1、一維陣列的宣告

T[] arrayName; 或 T arrayName[]; 
附:推薦使用第一種格式,因為第一種格式具有更好的可讀性,表示T[]是一種引用型別(陣列)。建議不要使用第二種方式
下面是典型的宣告陣列(整型為例)的方式:
 // 宣告整型陣列
 int[] intArray0 ;
 int intArray1 [];
 // 錯誤的宣告陣列的方式,宣告陣列的時候不能指定其大小
 // int [5] intErrorArray0;
 // int intErrorArray1[5];

注:Java語言中宣告陣列時不能指定其長度(陣列中元素的個數),這是因為陣列是一種引用型別的變數,,因此使用它定義一個變數時,僅僅表示定義了一個引用變數(也就是定一個了一個指標),這個引用變數還未指向任何有效的記憶體,所以定義陣列時不能指定陣列的長度。而且由於定義陣列僅僅只是定一個引用變數,並未指向任何有效的記憶體空間,所以還沒有記憶體空間來儲存陣列元素,因此這個陣列也不能使用,只有在陣列進行初始化後才可以使用。記憶體一旦分配不能改變,所以說陣列長度固定。

2、一維陣列的建立
     Java中使用關鍵字new建立陣列物件,格式為:陣列名 = new 陣列元素的型別 [陣列元素的個數]
 // 建立陣列,如果在建立的同時不初始化陣列則必須指定其大小
 intArray0 = new int[3];
 // 錯誤的建立陣列的方式,如果建立陣列時不指定大小則必須初始化
 // intArray1 = new int[];
 // 建立陣列時,不指定陣列大小則必須在建立的同時初始化陣列
  intArray1 = new int[]{0,1,2};
   使用new建立陣列物件但是分配陣列時會自動為陣列分配預設值,具體如下:
 System.out.println( "intArray0[0]=" + intArray0 [0]);
 floatArray0 = new float[3];
 System. out.println("floatArray0[0]=" + floatArray0[0]);
 boolArray0 = new boolean[3];
 System. out.println("boolArray0[0]=" + boolArray0[0]);
 charArray0 = new char[3];
 System. out.println("charArray0[0]=" + charArray0[0]);
 stringArray0 = new String[3];
 System. out.println("stringArray0[0]=" + stringArray0[0]);
輸出如下:
 intArray0[0]=0
 floatArray0[0]=0.0
 boolArray0[0]=false
 charArray0[0]=
 stringArray0[0]=null
附:一旦使用new關鍵字為陣列分配了記憶體空間,每個記憶體空間儲存的內容就是陣列元素的值,也就是陣列元素就有了初始值,即使這個記憶體空間儲存的內容是空,這個空也是一個值null。也就是說不可能只分配內容空間而不賦初始值,即使自己在建立陣列物件(分配內容空間)時沒有指定初始值,系統也會自動為其分配

附:諸如基礎資料型別的包裝類,其預設的初始化值均為null,因為基礎資料型別的包裝類建立的陣列屬於引用陣列(物件陣列),物件陣列預設的初始化值都是null

3、一維陣列的初始化
     陣列的初始化分為靜態初始化、動態初始化和預設初始化:
     靜態初始化是陣列在初始化時由程式設計師顯式指定每個陣列元素的初始值而陣列長度由系統決定。
     動態初始化是陣列在初始化時只指定陣列長度,由系統為陣列元素分配初始值。
     a、陣列靜態初始化的語法格式:
     arrayName = new type[]{element1,element2,element3...}或者使用簡化的語法格式:arrayName = {element1,element2,element3...}
     b、陣列動態初始化的語法格式:
     arrayName = new type[length];
附:靜態初始化時不能指定元素個數,而動態初始化時則必須指定元素個數。靜態初始化時陣列能夠知道元素的個數所以不需要指定,而動態初始化時陣列元素個數未知因此必須指定。
 // 靜態初始化
 int intArray2 [] = new int[]{20,21,22};
  // 靜態初始化簡化方式
 int intArray3 [] = {30,31,32};
  // 動態初始化
 int[] intArray4 = new int[3];          
 // 錯誤寫法:靜態初始化不能指定元素個數
 // int intErrorArray5[] = new int[3]{50,51,52};
 // 錯誤寫法:動態初始化必須指定元素個數
 // int intErrorArray6[] = new int[];

注:一維陣列這一塊記住兩點,陣列宣告的時候是不能指定大小的,也就是說等號左邊的中括號中不能包含數字。另外一旦使用new關鍵字那麼肯定在記憶體中為陣列分配了空間,則必然陣列有預設值。陣列是物件資料型別

注:不要靜態初始化和動態初始化同時使用,也就是說不要再進行陣列初始化時,既指定陣列長度,也為每個陣列元素分配初始值。

4、陣列進行動態初始化時系統分配初始值的規則
     陣列元素型別是基本型別中的整數型別(byte、short、int、long),則陣列元素的值是0
     陣列元素型別是基本型別中的浮點型別(float、double),則陣列元素的值是0.0
     陣列元素型別是基本型別中的字元型別(char),則陣列元素的值是'\u0000'
     陣列元素型別是基本型別中的布林型別(boolean),則陣列元素的值是false
     陣列元素型別是基本型別中的引用型別(類、介面、陣列),則陣列元素的值是null

5.建立的三種方式

public static void main(String[] args) {
	// 1.方式一  宣告 分配空間並賦值
	int[] arr1 = {1,2,3};
	// 2.方式二 顯示初始化
	int[] arr2;
	arr2 = new int[]{1,2,3}; 
	// 3.方式三 顯示初始化()
	int[] arr3;
	arr3 = new int[3];
}