2010-10-30 43 views

回答

34

Java的語言不限制維數,但Java VM 規範限制的維數到255

例如,下面的代碼將無法編譯:

class Main { 
    public static void main(String[] args) { 
     final int[][][][][][][][][][][][][][][][] 
       [][][][][][][][][][][][][][][][] 
       [][][][][][][][][][][][][][][][] 
       [][][][][][][][][][][][][][][][] 
       [][][][][][][][][][][][][][][][] 
       [][][][][][][][][][][][][][][][] 
       [][][][][][][][][][][][][][][][] 
       [][][][][][][][][][][][][][][][] 
       [][][][][][][][][][][][][][][][] 
       [][][][][][][][][][][][][][][][] 
       [][][][][][][][][][][][][][][][] 
       [][][][][][][][][][][][][][][][] 
       [][][][][][][][][][][][][][][][] 
       [][][][][][][][][][][][][][][][] 
       [][][][][][][][][][][][][][][][] 
       [][][][][][][][][][][][][][][][] x; 
    } 
} 

,錯誤:

1.java:18: error: array type has too many dimensions 
       [][][][][][][][][][][][][][][][] x; 
               ^
1 error 

(參考文獻:https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.1「的數組類型描述符僅是有效的,如果它代表255米或更少的尺寸。」)

+2

換句話說,如果你需要超過255(ha!),你將不得不將外部數組作爲對象數組,然後在你得到256以下時將它們轉換爲實際類型。 – Gabe 2010-10-30 21:00:26

+0

這很有趣 - 我沒有'不知道。一方面,我想知道爲什麼有人會想要使用這種維度的數組,另一方面,我想知道爲什麼他們會這樣限制它。 – Cam 2010-10-30 21:00:59

+1

@Cam 255適合8位。 – kennytm 2010-10-30 21:02:20

0

小實驗顯示,255個尺寸是最大的。 256導致編譯錯誤;

The screenshot

+5

這個答案在2010年已經提供:-) – Carpetsmoker 2016-12-06 22:41:32