cp ft wat_Java数组,Wat!
cp ft wat
數(shù)組可以做一些令人驚訝的事情。
是否是數(shù)組?
Serializable array = new Serializable[9];數(shù)組是數(shù)組還是標(biāo)量? 好吧,它是指向數(shù)組的標(biāo)量。 就像
Object o = new Object[9];您可以將數(shù)組分配給對(duì)象,因?yàn)樗彩菍?duì)象。 但是,數(shù)組也是可序列化的,因此您可以將它們分配給可序列化。
我的[]去了哪里?
[]可能出現(xiàn)在令人驚訝的地方。 出于向后可比較性的原因進(jìn)行編譯。
public static int method(int[]... args)[] {return args[0]; }這里的類型是; args是一個(gè)int [] [],返回類型是int []。 您在方法聲明后注意到[]了嗎? 這不是JLS的一部分,并且由于向后兼容的原因,OpenJDK允許這樣做。
之后的內(nèi)容有所不同。
int[] array, x[];和
int array[], y[];在這些情況下; x是int [] []但y只是int [] 。
如果數(shù)組初始化太大,會(huì)發(fā)生什么?
說(shuō)我初始化這樣的數(shù)組
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, };錯(cuò)誤消息是;
Error:(6, 31) java: code too large 這似乎有點(diǎn)奇怪。 它不會(huì)抱怨數(shù)組太大。 實(shí)際上,如果我有更多的靜態(tài)字段或使用較大的常量,則對(duì)于較小的數(shù)組它將失敗。
發(fā)生這種情況是因?yàn)閿?shù)組是用字節(jié)碼初始化的。 字節(jié)碼創(chuàng)建數(shù)組并初始化每個(gè)值,一次一個(gè)。 這會(huì)導(dǎo)致大量用于大型數(shù)組的代碼,如果方法的大小沒(méi)有限制,這將是一個(gè)問(wèn)題。 即65535字節(jié)。 編譯器只為構(gòu)造函數(shù)或靜態(tài)初始化生成一種方法,因此這限制了您可以擁有的枚舉數(shù)和初始化數(shù)組的大小。
翻譯自: https://www.javacodegeeks.com/2014/04/java-arrays-wat.html
cp ft wat
總結(jié)
以上是生活随笔為你收集整理的cp ft wat_Java数组,Wat!的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: linux忘记密码怎么办(linux 忘
- 下一篇: 安卓系统怎么定位另一台手机(安卓系统怎么