有人能解釋一下數組在Java中是如何工作的。java數組是如何工作的
我被下面的代碼感到驚訝:
Object test = new Object[2][2];
Object test2 = new Object[] {
new Object[2],new Object[2]
};
Object test3 = new Object[2][];
((Object[])test3)[0] = new Object[2];
((Object[])test3)[1] = new Object[2];
System.out.println(test instanceof Object[]);
System.out.println(test instanceof Object[][]);
System.out.println(test2 instanceof Object[]);
System.out.println(test2 instanceof Object[][]);
System.out.println(test3 instanceof Object[]);
System.out.println(test3 instanceof Object[][]);
只有test2的不是對象[] []
什麼是運行時的區別的一個實例?
編輯:我看到一些答案。 喬恩斯基特,請注意,我可以這樣做:
Object[] test4 = (Object [])test;
test4[0] = "blaaa";
test4[1] = "toto";
System.out.println(test4);
測試的instanceof Object []對象返回true,沒有例外是在上投運行時提出的。但是,當試圖用「test4 [0] =」blaaa「;」來重新分配一個新的值時,我們可以通過測試IS-A對象[] [] [] [012]我得到一個異常: 異常線程「main」 java.lang.ArrayStoreException:在Main.main(Main.java:24)java.lang.String中
所以它似乎在運行,測試和測試2 IS -A對象[],並且都包含對象數組,但只有其中一個IS-A對象[] []
我添加了我自己的答案,該問題。這也許超出了範圍,但它會幫助人們瞭解泛型集合和陣列之間的differencies編譯器和JVM – 2011-11-17 00:39:02