從頭認識java-4.8 數組的初始化(1)
這一章節我們來討論一下數組的初始化。
1.數組是一個對象。
package com.ray.ch01;public class Test {public static void main(String[] args) {int[] a = {};System.out.println(a instanceof Object);}}
輸出:
true
2.把數組賦值給變數,其實是把數組的引用賦值給變數。
package com.ray.ch04;import java.util.Arrays;public class Test {public static void main(String[] args) {int[] a1 = { 1, 2, 3, 4, 5 };int[] a2;a2 = a1;System.out.println(a2.equals(a1));for (int i = 0; i < a2.length; i++) {a2[i] += 1;}System.out.println(Arrays.toString(a1));}}
輸出:
true
[2, 3, 4, 5, 6]
從上面的結果可以看見,a1、a2指向同一個對象,當改變a2時,a1也同時改變。
數組不單可以放基礎類型,還可以放對象。
package com.ray.ch04;public class Test {public static void main(String[] args) {Integer[] a = { new Integer(1), new Integer(2) };}}
3.讀取長度超過數組長度時,拋異常
改動一下上面的代碼
package com.ray.ch04;import java.util.Arrays;public class Test {public static void main(String[] args) {int[] a1 = { 1, 2, 3, 4, 5 };int[] a2;a2 = a1;System.out.println(a2.equals(a1));for (int i = 0; i <= a2.length; i++) {//改動這裡,多了一個=號a2[i] += 1;}System.out.println(Arrays.toString(a1));}}
輸出:
true
Exception in thread main java.lang.ArrayIndexOutOfBoundsException: 5
at com.ray.ch04.Test.main(Test.java:12)
4.除了上面顯性賦值之外,我們還可以使用new來建立數組,但是必須寫清楚數組的長度
package com.ray.ch04;public class Test {public static void main(String[] args) {int[] a2 = new int[5];//必須寫清楚長度}}
這裡有可能會有疑問,為什麼int也可以使用new,因為它後面加上了“[]”,它代表的不是基礎類型的int,而是代表一個放置int類型的數組,數組是對象,所以可以使用new
5.賦值
如果是基礎類型,會直接把資料發放到數組裡面,如果是類,則會把引用放到數組裡面。
基礎類型:
package com.ray.ch04;import java.util.Arrays;import java.util.Random;public class Test {public static void main(String[] args) {int[] a2 = new int[5];Random random = new Random(50);for (int i = 0; i < a2.length; i++) {a2[i] = random.nextInt();}System.out.println(Arrays.toString(a2));}}
輸出:
[-1160871061, -1727040520, -1657178909, -765924271, -1625295794]
對象:
package com.ray.ch04;import java.util.Arrays;public class Test {public static void main(String[] args) {Book[] a2 = new Book[5];for (int i = 0; i < a2.length; i++) {a2[i] = new Book();}System.out.println(Arrays.toString(a2));}}class Book {}
輸出:
[com.ray.ch04.Book@61de33, com.ray.ch04.Book@14318bb, com.ray.ch04.Book@ca0b6, com.ray.ch04.Book@10b30a7, com.ray.ch04.Book@1a758cb]
總結:這一章節簡單討論了數組的幾個注意點。