开发者社区> 问答> 正文

java中为什么数组静态初始化可以省略new,而动态初始化不行?

已解决

java中为什么数组静态初始化可以省略new,而动态初始化不行?

展开
收起
游客4ztx2pti3xtdw 2022-04-02 14:27:12 1069 0
1 条回答
写回答
取消 提交回答
  • 推荐回答

    这是由于java设计之初为了契合用户习惯做得妥协(也可以说是优化)。我们都知道java是1995年设计出来的,相比c(1972年)、c++(1983年)这些语言来说是后起之秀。而c、c++定义数组习惯使用 int a[] = {1, 2, 3}; 这样的方式。因此java也顺势继承了下来。java作为纯面向对象语言,同时数组在java中以对象形式存在。这种写法咋看之下违背了对象创建的方式,而它实际上只是一种语法糖(简化写法)。编译器遇到 int a[] = {1, 2, 3}; 会编译成和 int a[] = new int[] {1, 2, 3}; 完全一样的中间代码。因此 int a[] = {1, 2, 3}; 和 int a[] = new int[] {1, 2, 3}; 这些写法,实际上是等价的,任何一种写法都能正确编译,所以当然不会报错了。本质都是一样的。

    2022-04-02 17:02:05
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载