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

【Java每日一題】數組聲明初始化語法陷阱:五種寫法只有兩種合法

     編輯:Java 綜合教學

題目

package Dec2016;
public class Ques1230 {
    int array = {1, 2, 3};        // 1
    int array[] = {1, 2, 3};      // 2
    int[] array = {1, 2, 3};      // 3
    int array[] = new int{1, 2, 3}; // 4
    int array = [1, 2, 3];        // 5
}

問題分析

請判斷哪些語句能編譯通過,哪些會報錯,並說明錯誤原因。

逐行解析

代碼結果解析
int array = {1, 2, 3}; ❌ 編譯錯誤 類型不匹配:左側是基本類型 int,右側是數組初始化器。基本類型變量不能直接賦值為數組。
int array[] = {1, 2, 3}; ✅ 編譯通過 C 風格語法:類型後置 [],靜態初始化器賦值。合法但不推薦(降低可讀性)。
int[] array = {1, 2, 3}; ✅ 編譯通過 推薦風格:類型前置 int[],語義清晰「int 數組類型的變量 array」。
int array[] = new int{1, 2, 3}; ❌ 編譯錯誤 new int[3] 需指定長度,或 new int[]{1,2,3}(匿名數組)。大括號不能跟在 new int 後。
int array = [1, 2, 3]; ❌ 編譯錯誤 中括號 [] 是數組訪問/聲明語法,不能用於賦值右側。JS/JSON 風格在 Java 無效。

正確寫法總結

// 1. 靜態初始化(聲明時賦值)—— 推薦
int[] arr1 = {1, 2, 3};
int[] arr2 = new int[]{1, 2, 3}; // 匿名數組,可用於方法參數

// 2. 動態初始化(指定長度,默認值 0)
int[] arr3 = new int[3];
arr3[0] = 1; arr3[1] = 2; arr3[2] = 3;

// 3. 多維數組
int[][] matrix = {{1,2}, {3,4}};
int[][] matrix2 = new int[2][3];

核心知識點

  1. 聲明語法: 類型[] 變量名(推薦)或 類型 變量名[]。
  2. 初始化方式: 靜態(大括號列表)vs 動態(new 類型[長度])。
  3. 匿名數組: new 類型[]{值列表},無變量名,常作實參傳遞。
  4. 默認值: 數值型 0、布爾 false、引用 null。

延伸思考

若在方法中寫:

void foo(int[] arr) {}
foo(new int[]{1,2,3}); // 匿名數組
foo({1,2,3}); // ❌ 錯誤:靜態初始化器只能在聲明處使用

這是因為靜態初始化器屬於聲明語句一部分,不能獨立作為表達式。

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