形式1:
Object[] params = null;
params = {1, 2, 3, 4};
形式2:
Object[] params = {1, 2, 3, 4};
形式3:
Object[] params = new Object[]{1, 2, 3, 4};
1.为什么第一种形式就是错的(编译阶段就报错),而第二种就可以呢?(第三种很显然)
2.第二种和第三种,哪种初始化方式更优呢?(或者有更好的?)
形式1:
Object[] params = null;
params = {1, 2, 3, 4};
形式2:
Object[] params = {1, 2, 3, 4};
形式3:
Object[] params = new Object[]{1, 2, 3, 4};
1.为什么第一种形式就是错的(编译阶段就报错),而第二种就可以呢?(第三种很显然)
2.第二种和第三种,哪种初始化方式更优呢?(或者有更好的?)
形式1
Object[] params = {1, 2, 3, 4};
这种声明方式其实只是Java初始化数组的语法糖,所谓语法糖只是为了方便码农,在实际执行中,Java会把它变成形式3,即
Object[] params = new Object[]{1, 2, 3, 4};
而Java并没有提供类似形式2的这种语法糖,所以这样使用是非法了。
Object[] params = null;
params = new Object[]{1, 2, 3, 4};
A. 语法规定楼主不需要太纠结
B. 如果你预先知道数组元素,使用第Object[] params = {1, 2, 3, 4};
声明数组代码更简洁,没有更优的说法。
10 回答11.1k 阅读
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答6k 阅读
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
首先因为数组初始化要使用的时候必须确定数组的长度,也就是说数组的长度是不可变的。
在JAVA中创建数组有两种方式 :
(1)静态创建 如
(2)动态创建 如
1
2
3
而题主说的那种方法:
错误一:你这是直接创建一个空数组params,也就是他就是空了,数组的长度不可改变,你这时候往里面加数据,一个空数组自然加不了任何东西,所以编译时就会出错。你应该跟我上面所说的第二种方法一样,重新创建一个长度为4的数组,把新数组的地址给params,也就是Object[] params = null; params = new Object[4];这样就可以创建。
错误二:数组的初始化只有在定义的时候可以连续添加,定义完
之后,你要向里面添加数据,就只能对着数组下标,一个一个添加。
而不能直接params = {1, 2, 3, 4};