找了一下发现网上只说就这么定义的,哪位大神能帮忙解释一下根本原因?
是不是能从虚拟机的角度解释一下?
谢谢啦!
eg.
String s[] = new String[] {"1","2","3"};正确
String s[] = {"1","2","3"};正确
String s[] = new String[3] {"Zero","One","Two"};错误
阿神2017-04-17 17:27:34
陣列初始化就是取得該陣列的固定容量,
{"","",""}的方式能取得陣列的固定容量,順帶把每個元素都賦值,
new String[3]的方式也能告知編譯器該陣列的固定容量,順帶把每個元素都置為null,
但是兩種方式同時規範該數組的固定容量,在語法上有產生矛盾衝突的風險,
例如new String[4]{"","",""},
所以為了避免這樣的歧義,從語法上就應該禁止這種同時規範數組容量的寫法
天蓬老师2017-04-17 17:27:34
文法這麼規定的。 。 。
跟虛擬機器沒有啥關係
https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.10.1