开发者社区 问答 正文

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

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

String s[] = new String[] {"1","2","3"};正确
String s[] = {"1","2","3"};正确
String s[] = new String[3] {"Zero","One","Two"};错误

展开
收起
蛮大人123 2016-03-11 16:16:42 2367 分享 版权
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    数组初始化就是获取该数组的固定容量,
    {"","",""}的方式能获取数组的固定容量,顺带把每个元素都赋值,
    new String[3]的方式也能告知编译器该数组的固定容量,顺带把每个元素都置为null,
    但是两种方式同时规范该数组的固定容量,在语法上有产生矛盾冲突的风险,
    例如new String[4]{"","",""},
    所以为了避免这样的歧义,从语法上就应该禁止这种同时规范数组容量的写法.
    参考:https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.10.1

    2019-07-17 18:59:32
    赞同 展开评论