除了语法之外,以下两个语句之间有什么区别吗?
String[] str = { "test" };
和
String[] str = new String[] {"test"};
答案 0 :(得分:4)
不,没有区别。除非您想将其传递给方法
methodWhichAcceptsArray({"a", "b"}); //won't compile
methodWhichAcceptsArray(new String[] {"a", "b"}); //ok
答案 1 :(得分:4)
让我们看看:
// String[] str1 = { "test" };
0: iconst_1
1: anewarray #16 // class java/lang/String
4: dup
5: iconst_0
6: ldc #18 // String test
8: aastore
9: astore_1
// String[] str2 = new String[] {"test"};
10: iconst_1
11: anewarray #16 // class java/lang/String
14: dup
15: iconst_0
16: ldc #18 // String test
18: aastore
19: astore_2
如您所见,它们编译为相同的字节码。
请注意,在外部实施时,您通常必须使用第二种形式。
答案 2 :(得分:2)
不,没有。
String[] str = { "test" };
将被JVM解释为
String[] str = new String[] {"test"};