首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Java 陣列宣告 `int[] arr = new int[]` 為何出現兩次型別?前者宣告變數型別,後者配置記憶體型別

     編輯:程式設計疑難解答

初學者常問:`int[] arr = new int[10];` 為什麼 `int` 寫兩次?

語法拆解


int[] arr      // 左側:宣告變數 arr 的型別為「int 陣列」
=              // 指派
new int[10]    // 右側:在堆疊配置一個「int 陣列」物件,長度 10
  • 宣告型別:告訴編譯器 `arr` 只能參考 `int[]` 型別的物件。
  • 建立型別:`new` 運算子後必須指明要建立什麼型別的物件(這裡是 `int[]`),並給定長度。

型別能否不一致?

**不能**。左側宣告型別與右側建立型別必須相容(相同或為父類別/介面)。例如:


Number[] nums = new Integer[10]; // 合法:Integer 是 Number 子類別
int[] arr = new long[10];        // 編譯錯誤:long[] 不是 int[]

簡寫語法

若同時宣告並指定初始值,可省略右側 `new int[]`:


int[] arr = {1, 2, 3, 4, 5}; // 編譯器自動推斷型別與長度

總結:`int[] arr` 是**變數契約**,`new int[10]` 是**物件實例**,兩者分工明確,型別必須一致。

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