先看两段代码:
第一段代码:
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。 但是现在又 一个可以 一个不可以, 所以这显然是有区别的。所以我这里想知道,是什么原因
int[] arr={3,3,5,9,11}; 这是静态初始化的一个语法糖而已,实际还是new出来的
arr= {3,3,5,9,11}; 这个和上面的含义就完全不一样了,相当于int[] arr这个变量的赋值,java不支持这种语法
你的意思我大概明白, 有没有比较官方的解释, 就是你说的这句话,怎么把它完整的表述出来
@凌晨10点13分: 官方的也是这个内容,你可以仔细学习下java的图书,搞懂java语言后这些就明白了
比如 Bruce Eckel的Thinking in Java(Java编程思想) 这本书,很多的这些技术点都有讲解