Java数组,Wat!
生活随笔
收集整理的這篇文章主要介紹了
Java数组,Wat!
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
數組可以做一些令人驚訝的事情。
是否是數組?
Serializable array = new Serializable[9];數組是數組還是標量? 好吧,它是指向數組的標量。 就像
Object o = new Object[9];您可以將數組分配給對象,因為它也是對象。 但是,數組也是可序列化的,因此您可以將它們分配給可序列化。
我的[]去了哪里?
[]可能出現在令人驚訝的地方。 出于后向可比較性原因進行編譯。
public static int method(int[]... args)[] {return args[0]; }這里的類型是; args是int [] [],返回類型是int []。 您在方法聲明后注意到[]了嗎? 這不是JLS的一部分,并且由于向后兼容的原因,OpenJDK允許這樣做。
之后的內容有所不同。
int[] array, x[];和
int array[], y[];在這些情況下; x是int [] []但y只是int [] 。
如果數組初始化太大,會發生什么?
說我初始化這樣的數組
public static final int[] VALUES = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,/* many, many lines deleted */1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20, };錯誤消息是;
Error:(6, 31) java: code too large 這似乎有點奇怪。 它不會抱怨數組太大。 實際上,如果我有更多的靜態字段或使用較大的常量,則對于較小的數組它將失敗。
發生這種情況是因為數組是用字節碼初始化的。 字節碼創建數組并初始化每個值,一次初始化一個。 這會導致大量用于大型數組的代碼,如果方法的大小沒有限制,這將是一個問題。 即65535字節。 編譯器只為構造函數或靜態初始化生成一種方法,因此這限制了您可以擁有的枚舉數和初始化數組的大小。
翻譯自: https://www.javacodegeeks.com/2014/04/java-arrays-wat.html
總結
以上是生活随笔為你收集整理的Java数组,Wat!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 4个方法教你把手机照片文件传到电脑上如何
- 下一篇: 路由器安装步骤图解fttb如何安装路由器