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

Java陣列初始化

1.Java 陣列初始化的兩種方法:    

    靜態初始化: 程式設計師在初始化陣列時為陣列每個元素賦值;

動態初始化: 陣列初始化時,程式設計師只指定陣列的長度,由系統為每個元素賦初值。

public class ArrayInit {
	public static void main(String[] args) {
		
		//靜態初始化陣列:方法一
		String cats[] = new String[] {
				"Tom","Sam","Mimi"
		};
		
		//靜態初始化陣列:方法二
		String dogs[] = {"Jimmy","Gougou","Doggy"};
		
		//動態初始化資料
		String books[] = new String[2];
		books[0] = "Thinking in Java";
		books[1] = "Effective Java";
		
		System.out.println(cats.length);
		System.out.println(dogs.length);
		System.out.println(books.length);
	}
}

Java陣列是一種引用資料型別。陣列變數並不是陣列本身,而是指向堆記憶體中存放的陣列物件。因此,可以改變一個數組變數所引用的陣列。看下面這段程式碼:

public class ArrayInit {
	public static void main(String[] args) {
		
		//靜態初始化陣列:方法一
		String cats[] = new String[] {
				"Tom","Sam","Mimi"
		};
		
		//靜態初始化陣列:方法二
		String dogs[] = {"Jimmy","Gougou","Doggy"};
		
		//動態初始化資料
		String books[] = new String[2];
		books[0] = "Thinking in Java";
		books[1] = "Effective Java";
		
		cats = dogs;
		books = dogs;
		printArray(cats);
		printArray(dogs);
		printArray(books);
	}
	
	private static void printArray(String[] arr) {
		for(int i=0; i < arr.length; i++) {
			System.out.println(arr[i]);
		}
	}
}

 2.陣列是否必須初始化

對於這個問題,關鍵在於要弄清楚陣列變數和陣列物件的差別。陣列變數是存放在棧記憶體中的,陣列物件是存放在堆記憶體中的。陣列變數只是一個引用變數,他能夠指向實際的陣列物件。

    所謂的陣列初始化並非對陣列變數初始化,而是對陣列物件進行初始化。