Java 数组初始化和“new”关键字

Java 数组初始化和“new”关键字,java,arrays,Java,Arrays,撇开语法不谈,下面两个语句之间有什么区别吗 String[] str = { "test" }; 及 不,没有 String[] str = { "test" }; 将由JVM解释为 String[] str = new String[] {"test"}; 不,没有 String[] str = { "test" }; 将由JVM解释为 String[] str = new String[] {"test"}; 不,没有区别。除非要将其传递给方法 methodWhichAccepts

撇开语法不谈,下面两个语句之间有什么区别吗

String[] str = { "test" };

不,没有

String[] str = { "test" };
将由JVM解释为

String[] str = new String[] {"test"};
不,没有

String[] str = { "test" };
将由JVM解释为

String[] str = new String[] {"test"};

不,没有区别。除非要将其传递给方法

methodWhichAcceptsArray({"a", "b"}); //won't compile
methodWhichAcceptsArray(new String[] {"a", "b"}); //ok

不,没有区别。除非要将其传递给方法

methodWhichAcceptsArray({"a", "b"}); //won't compile
methodWhichAcceptsArray(new String[] {"a", "b"}); //ok
让我们看看:

// 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      
如您所见,它们编译为相同的字节码

请注意,在初始化之外,通常必须使用第二种形式。

让我们看看:

// 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      
如您所见,它们编译为相同的字节码


请注意,在初始化之外,通常必须使用第二种形式。

不能将第一种形式分解为多个语句。仅此而已。不,这只是一个快捷语法。您可以通过查看这两段代码生成的字节码进行检查。您不能将第一段代码分解为多个语句。仅此而已。不,这只是一个快捷语法。您可以通过查看这两段代码生成的字节码进行检查。