찾다

 >  Q&A  >  본문

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

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

eg.

String s[] = new String[] {"1","2","3"};正确
String s[] = {"1","2","3"};正确
String s[] = new String[3] {"Zero","One","Two"};错误
PHP中文网PHP中文网2795일 전693

모든 응답(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
  • 취소회신하다