在這篇文章中,我們將討論Java語言中的復雜數據類型。其內容涉及到初始化過程、默認初值和某些針對復雜數據類型的操作。
索引
同簡單數據類型的定義一樣,Java虛擬機(JVM)還定義了索引(reference)這種數據類型。索引類型可以“引用”變量,由於Java沒有明確地定義指針類型,所以索引類型可以被認為就是指向實際值或者指向變量所代表的實際值的指針。一個對象可以被多於一個以上的索引所“指”。JVM從不直接對對象尋址而是操作對象的索引。
索引類型分成三種,它們是:類(class)、接口(interface)和數組(array)。索引類型可以引用動態創建的類實例、普通實例和數組。索引還可以包含非凡的值,這就是null 索引。null 索引在運行時上並沒有對應的類型,但它可以被轉換為任何類型。索引類型的默認值就是null。
類
類(Class)指的是定義方法和數據的數據類型。從內部來看,JVM通常把class類型對象實現為指向方法和數據的一套指針。定義class類型的變量只能引用類的實例或者null ,如以下代碼所示:
MyObject anObject = new MyObject(); // 合法
MyObject anotherObject = null; // 合法
MyObject stillAnotherObject = 0; // 非法
接口
接口(interface)好比一種模版,這種模版定義了對象必須實現的方法,其目的就是讓這些方法可以作為接口實例被引用。接口不能被實例化。類可以實現多個接口並且通過這些實現的接口被索引。接口變量只能索引實現該接口的類的實例。比方說,假設我們定義了一個接口,名字是Comparable ,同時還定義了一個類SortItem,這個類實現了接口Comparable,那麼我們可以編寫以下的定義代碼:
Comparable c = new SortItem();
假如Comparable 接口定義了一個方法: public void compare(Comparable item), 那麼SortItem 類就必須提供compare 方法的實現,如以下代碼所示:
public class SortItem implements Comparable
{
public void compare(Comparable item)
{
...method implementation here