当我创建一个新数组时,我会做这样的事情.
int[] anArray = {1, 2, 3};
Run Code Online (Sandbox Code Playgroud)
但我看到有些人做了类似的事情.
int[] anArray = new int[] {1, 2, 3};
Run Code Online (Sandbox Code Playgroud)
我明白它的作用,但我不明白它的目的.这样做有什么好处呢?
谢谢
Jon*_*eet 11
两者都有效的行为没有区别.它们在Java语言规范的第10.6节和第15.10节中介绍.
但是,第一种语法仅在声明变量时有效.例如:
public void foo(String[] args) {}
...
// Valid
foo(new String[] { "a", "b", "c" };
// Invalid
foo({"a", "b", "c"});
Run Code Online (Sandbox Code Playgroud)
至于目的 - 第一种语法的目的是允许变量声明更简洁......第二种语法的目的是作为表达式用于通用目的.禁止变量声明的第二种语法会很奇怪,因为可用的语法更简洁.
它们几乎是一样的,但第一个适用于对象分配,如:
int[] anArray = {1, 2, 3};
Run Code Online (Sandbox Code Playgroud)
另一个更像球状
callingMyMethod(new Object[]{object1,object2});
Run Code Online (Sandbox Code Playgroud)
语法错误
callingMyMethod({object1,object2});
Run Code Online (Sandbox Code Playgroud)
让我们进一步吧
这些初始化是正确的:
Object[] objeto={new Object(), new Object()};
Object[] objeto=new Object[]{new Object(), new Object()};
Run Code Online (Sandbox Code Playgroud)
也是对的:
Object[] objeto;
objeto=new Object[]{new Object(), new Object()}
Run Code Online (Sandbox Code Playgroud)
但正如乔恩所说,这是错误的:
Object[] objeto;
objeto={new Object(), new Object()};
Run Code Online (Sandbox Code Playgroud)
无论如何你的两种语法都是正确的.一方面对另一方没有任何好处.
有趣的阅读这个主题:
Oracle官方文档中的数组
这一点也包含在这个主题中
这只是一个标准.如果您使用:
int[] anArray = new int[] {1, 2, 3};
Run Code Online (Sandbox Code Playgroud)
你是说每个数字(1,2,3)都是一个int.它不能是双倍的,浮动的等等.这只是出于安全原因.
如果声明应该在初始化之前完成,则可以使用第二种方式.
int[] arr;
arr = { 2, 5, 6, 12, 13 };
Run Code Online (Sandbox Code Playgroud)
不行,所以你使用:
int[] arr;
arr = new int[]{ 2, 5, 6, 12, 13 };
Run Code Online (Sandbox Code Playgroud)
代替.另一种方法是声明另一个变量:
int[] arr;
int[] tmparr = { 2, 5, 6, 12, 13 };
arr = tmparr;
Run Code Online (Sandbox Code Playgroud)
因此,如果您不需要从初始化中分离声明,那么只需要清理代码(使用任何一个代码).
归档时间: |
|
查看次数: |
1719 次 |
最近记录: |