首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 復雜數據類型深度解析:引用類型、類、介面、數組與復合數據結構

     編輯:Java 相關知識

引用類型:JVM 記憶體模型的核心

Java 虛擬機規範定義三大數據類型類別:基本類型、引用類型、返回地址類型(已淘汰)。引用類型 相當於 C/C++ 的指針,但去除了指針運算,僅保留「引用對象」能力。JVM 從不直接操作對象,而是通過引用間接訪問。

三種引用類型

  1. 類類型:class 定義的類型,引用指向堆上對象實例。
  2. 介面類型:interface 定義的類型,引用指向實現該介面的對象實例。
  3. 數組類型:動態創建的對象,繼承自 java.lang.Object,元素可為基本類型或引用類型。

特殊值:null

  • 所有引用類型的默認值
  • 無具體運行時類型,可賦值給任意引用類型變量
  • instanceof 檢測永遠返回 false

類類型:對象的藍圖

MyObject obj = new MyObject();  // 合法:引用指向堆上實例
MyObject obj2 = null;           // 合法:空引用
MyObject obj3 = 0;              // 編譯錯誤:基本類型不可賦值給引用類型

JVM 內部以指向方法區類元數據與堆上實例數據的指針結構實現類引用。

介面類型:契約與多態的基石


interface Comparable { void compare(Comparable item); }
class SortItem implements Comparable { 
    public void compare(Comparable item) { /* 實現 */ }
}

Comparable c = new SortItem();  // 介面引用指向實現類實例
c.compare(c);                   // 多態調用

關鍵特性:

  • 介面不可實例化
  • 類可實現多個介面,一個對象可被多種介面類型引用
  • 介面變量只能引用實現該介面的類實例

數組類型:特殊的對象容器

創建與訪問


int[] arr = new int[5];          // 固定長度,元素默認 0
int[] arr2 = {9, 5, 6};          // 字面量初始化
int[] arr3 = null;               // 引用為空
int len = arr.length;            // 長度屬性(非方法),不可變
int first = arr[0];              // 索引從 0 開始

核心特性

  • 繼承 Object:擁有 clone()、toString() 等方法
  • 邊界檢查:越界拋出 ArrayIndexOutOfBoundsException,保證記憶體安全
  • 协变性:String[] 可賦值給 Object[],但運行時類型檢查防止類型污染
  • 長度不可變:需創建新數組並複製元素來「擴容」

復合數據類型:面向對象的數據組織方式

Java 無 struct/union,通過類/介面封裝數據與行為:

C 風格結構 vs Java 類


// C 結構
struct Car {
    char* model;
    char* make;
    int year;
    Engine* engine;
    Body* body;
    Tire** tires;
};

// Java 等價建模
interface CarModels { /* 常量定義 */ }
interface CarMakes { /* 常量定義 */ }

class Car {
    private CarModels model;
    private CarMakes make;
    private int year;
    private Engine engine;
    private Body body;
    private Tire[] tires;
    // 構造器、getter/setter、業務方法...
}

初始化順序

  1. 靜態字段/靜態塊(按聲明順序,類加載時執行一次)
  2. 實例字段默認值(0、null、false)
  3. 實例字段顯式初始化/實例初始化塊(按聲明順序)
  4. 構造器體執行

預定義復合類型代表

類別包核心功能典型方法
Stringjava.lang不可變字符序列length(), substring(), toUpperCase(), equals()
Vectorjava.util同步可擴展對象數組add(), elementAt(), isEmpty(), remove()
ArrayListjava.util非同步動態數組(現代首選)get(), add(), size(), remove()
HashMapjava.util鍵值對映射put(), get(), containsKey()

總結

Java 的類型系統以「基本類型 + 引用類型」為基石,引用類型再分「類、介面、數組」三大支柱。理解引用語義(傳值調用中傳遞的是引用副本)、null 語義、數組邊界檢查與協變性,是寫出無 NPE、無越界、高性能 Java 代碼的前提。復合類型通過類/介面實現數據與行為封裝,集合框架(Collection/Map)則是預定義復合類型的集大成者,後續文章將深入剖析。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved