Java数组作为参数

你可以将一个新数组作为方法传递,并且仍然在该数组中有数据吗?

例如,我有这个方法: foo(String[]) ,我想像这个foo(new String[] s = {"String1", "String2"})一样调用它foo(new String[] s = {"String1", "String2"}) 。 但那不是有效的Java。

这是一种“有效的Java方式”(如同,编译并执行您想要的操作):

 foo(new String[] {"String1", "String2"}); 

如果您有机会更改此方法,那么您还可以考虑更改方法以采用varargs参数:

 public void foo(String... strings) { // ... } 

然后您可以按如下方式使用它,而无需显式创建数组:

 foo("String1", "String2"); 

以下内容也有效:

 foo("String1"); 

 foo("String1", "String2", "String3"); 

甚至更多。

如果你试图创建一个局部变量并保持它,不,你不能在方法调用中声明一个变量。 您必须先在通话之外声明它:

 String[] s = {"String1", "String2"}; foo(s); 

可以在通话中初始化s ,但我认为没有任何理由这样做,而且看起来非常糟糕:

 String[] s; foo(s = new String[] {"String1", "String2"}); 

如果你想只传递值而不再需要变量s ,那就这样做:

 foo(new String[] {"String1", "String2"}); 

您不能声明变量,但可以传递数组:

 foo(new String[] { "String1", "String2" }); 

如果您想稍后引用同一个数组,则需要在调用之前声明它。

你可以做foo(new String [] {“String1”,“String2”})