搜尋

首頁  >  問答  >  主體

Java中不能在声明数组大小的同时初始化的根本原因是什么?

找了一下发现网上只说就这么定义的,哪位大神能帮忙解释一下根本原因?
是不是能从虚拟机的角度解释一下?
谢谢啦!

eg.

String s[] = new String[] {"1","2","3"};正确
String s[] = {"1","2","3"};正确
String s[] = new String[3] {"Zero","One","Two"};错误
PHP中文网PHP中文网2788 天前687

全部回覆(3)我來回復

  • 阿神

    阿神2017-04-17 17:27:34

    陣列初始化就是取得該陣列的固定容量,
    {"","",""}的方式能取得陣列的固定容量,順帶把每個元素都賦值,

    new String[3]的方式也能告知編譯器該陣列的固定容量,順帶把每個元素都置為null,

    但是兩種方式同時規範該數組的固定容量,在語法上有產生矛盾衝突的風險,

    例如new String[4]{"","",""},

    所以為了避免這樣的歧義,從語法上就應該禁止這種同時規範數組容量的寫法

    回覆
    0
  • 天蓬老师

    天蓬老师2017-04-17 17:27:34

    文法這麼規定的。 。 。
    跟虛擬機器沒有啥關係

    https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.10.1

    回覆
    0
  • 高洛峰

    高洛峰2017-04-17 17:27:34

    數組申請的是一塊固定大小的記憶體區

    回覆
    0
  • 取消回覆