Java 实现动态阵列的更好方法

Java 实现动态阵列的更好方法,java,arrays,Java,Arrays,有了java 我能做到 String[] args = {"FOO", "BAR"}; 我不能这样做 String[] args; args={"FOO", "BAR"}; 这样做 String[] args = null; if(condition){ String[] foobar = { "Foo", "Bar" } ; args = foobar; }else{ String[] fooferBarer = { "Foofer", "Barer"

有了java

我能做到

String[] args = {"FOO", "BAR"};  
我不能这样做

String[] args;

args={"FOO", "BAR"}; 
这样做

String[] args = null;
if(condition){
    String[] foobar = { "Foo", "Bar" }  ;
     args  = foobar;
}else{
    String[] fooferBarer = { "Foofer", "Barer" }  ;
     args  = fooferBarer;
}



//use args here .....
这看起来很奇怪…有更好的方法吗


感谢阅读。

要在声明行以外的行上实例化数组,可以使用:

String[] args;
args = new String[] {"FOO", "BAR"}; 

是的,可以使用动态数组

最好将ArrayList用于动态数组。

您可以将ArrayList用作

ArrayList<String> args = new ArrayList<String>();
args.add("Foo");
args.add("Bar");
ArrayList args=new ArrayList();
参数添加(“Foo”);
参数添加(“条”);

任何初始化
数组的方法。所以

 String[] args;
 args = new String[int size];

因为
String[]args={“FOO”,“BAR”}
是Java语法的一条规则。您可以使用这些值启动数组,但是
args={“FOO”,“BAR”}
在语法上是错误的,因为这是Java,而不是Python。所以你应该像这样初始化数组
args=newstring[]{“FOO”,“BAR”}

您不能执行此操作:

String[] args;

args={"FOO", "BAR"}; 
因为在执行此操作之前,args没有初始化args={“FOO”,“BAR”}

解决方法:

(一)

(二)

3) 我建议您这样做,而不是使用字符串[]use List,因为对我来说更灵活,看起来更好:

List<String> args = new ArrayList<String>(); // in a case Java 7 use new ArrayList<>();
args.add("foo");
args.add("bar");
List args=new ArrayList();//在Java 7中使用新的ArrayList();
参数添加(“foo”);
参数添加(“条”);

您不能这样做,因为如果您有一行声明和实例化
字符串
数组,则会调用隐式
new
。因此,您必须显式调用
new
进行实例化

考虑以下代码:

String[] args;
现在,
args
只是一个参考变量,并不指向任何对象。要指向一个对象,您必须显式地调用
new
以实例化它:

args = new String[] {"FOO", "BAR"};  
或者您可以使用
ArrayList
,其中使用数组作为数据结构

String[] args;
args = new String[] {"FOO", "BAR"};