首页 新闻 会员 周边

Java静态初始化(有new 和 没new 的区别)

1
悬赏园豆:10 [已解决问题] 解决于 2020-12-09 18:54

先看两段代码:
第一段代码:
int[] arr={3,3,5,9,11};
arr= new int[]{3,3,5,9,11};//new的方式静态初始化

第二段代码:
int[] arr={3,3,5,9,11};
arr= {3,3,5,9,11};//不用new的方式

以上两段代码,都是静态初始化数组,但是第2中方式会报错

所以是什么原因, 网上一大堆帖子说:有new和没new 没有区别,没new 的 编译器会自动加上new。 但是现在又 一个可以 一个不可以, 所以这显然是有区别的。所以我这里想知道,是什么原因

凌晨10点13分的主页 凌晨10点13分 | 初学一级 | 园豆:179
提问于:2020-12-09 15:44
< >
分享
最佳答案
0

int[] arr={3,3,5,9,11}; 这是静态初始化的一个语法糖而已,实际还是new出来的
arr= {3,3,5,9,11}; 这个和上面的含义就完全不一样了,相当于int[] arr这个变量的赋值,java不支持这种语法

收获园豆:10
2012 | 高人七级 |园豆:21230 | 2020-12-09 16:55

你的意思我大概明白, 有没有比较官方的解释, 就是你说的这句话,怎么把它完整的表述出来

凌晨10点13分 | 园豆:179 (初学一级) | 2020-12-09 17:32

@凌晨10点13分: 官方的也是这个内容,你可以仔细学习下java的图书,搞懂java语言后这些就明白了
比如 Bruce Eckel的Thinking in Java(Java编程思想) 这本书,很多的这些技术点都有讲解

2012 | 园豆:21230 (高人七级) | 2020-12-09 18:54
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册