天天看點

java 數組

java 數組詳解

1、數組和集合的差別

數組是定長的,隻能存入相同類型元素的一種容器,它既可以存入引用資料類型元素,也可以存入基本資料類型元素。

而集合是可以自動增長容量的,可以存入不同類型元素的另外一種容器,集合中隻能存入引用資料類型的元素,不能存入基本資料類型的元素。

正因為如此,在JDK1.5的時候,加入了泛型機制和自動裝箱/拆箱機制;之前需要人工手動裝箱/拆箱。

2、數組本身是一種引用資料類型

2.1但我們發現在Eclipse裡無法通過“Ctrl+滑鼠左鍵”的方式打開一個數組的源碼。

2.2不過,我們卻又發現可以通過反射機制得到一個數組的Class對象,并進一步擷取這個Class對象的name屬性的值,示例代碼如下:

java 數組
java 數組

1 package test;
 2 
 3 public class Test {
 4     public static void main(String[] args) {
 5         int[] array = new int[10];
 6         System.out.println(array.getClass());
 7         System.out.println(array.getClass().getName());
 8         System.out.println();
 9         System.out.println("1".getClass());
10         System.out.println("1".getClass().getName());
11     }
12 }      

View Code

java 數組
java 數組
1 class [I
2 [I
3 
4 class java.lang.String
5 java.lang.String      

運作結果 

由此,我們知道,在本質上數組和其它的引用資料類型并沒有差別,隻不過是在具體的實作方式上有所不同而已。留待以後擴充......

2.3是以,數組中的每個元素相當于數組對象的成員變量。我們知道,數組元素的預設值為0、0L、0.0、0.0F、null等,而這和成員變量的預設值完全相同。

3、數組元素如果是引用類型,那麼在數組中儲存的就是一個一個的引用變量,而不是對象本身;也隻能儲存引用變量,否則數組元素的引用變量就沒有存在的意義了。

4、數組的聲明

int[] array = new int[10];

int[] array = new int[]{10};

int[10] array;

第三種寫法在java中是錯誤的;而在C++中可以的,表示在Stack記憶體塊中建立一個容量為10的數組。

5、數組有一個 length 屬性,它儲存着數組的長度。