3

用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 .....

这看起来很奇怪..有更好的方法吗?

谢谢阅读。

4

8 回答 8

19

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

String[] args;
args = new String[] {"FOO", "BAR"}; 
于 2013-07-10T11:56:36.490 回答
1

你不能这样做,因为如果你有一个行声明并且实例化一个String数组,那么new就会调用一个隐式。所以你必须显式调用new来实例化。

考虑这段代码:

String[] args;

就像现在一样,args它只是一个引用变量,并不指向任何对象。要指向一个对象,您必须new显式调用 like 来实例化它:

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

或者您可以使用ArrayList<String>which inside 使用数组作为数据结构。

于 2013-07-10T13:26:56.670 回答
0

任何方式你必须初始化你的array. 所以

 String[] args;
 args = new String[int size];
于 2013-07-10T12:03:25.817 回答
0

您可以将 ArrayList 用作,

ArrayList<String> args = new ArrayList<String>();
args.add("Foo");
args.add("Bar");
于 2013-07-10T12:00:58.807 回答
0

是的,动态数组可以使用ArrayList

于 2013-07-10T11:58:07.143 回答
0

动态数组最好使用 ArrayList。

于 2013-07-10T11:58:14.663 回答
0

因为String[] args = {"FOO", "BAR"};是 Java 语法规则。您可以使用值启动数组,但args={"FOO", "BAR"};语法错误,因为这是 Java,而不是 Python。所以你应该像这样启动数组args= new String[]{"FOO", "BAR"};

于 2013-07-10T12:07:55.217 回答
0

你不能做这个:

String[] args;

args={"FOO", "BAR"}; 

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

解决方法:

1)

String[] args = new String[]{"foo","bar"};

2)

String[] args; // here args is NULL 
args = new String[] {"FOO", "BAR"};

3)我建议你用这种方式而不是使用 String[] 使用 List,因为对我来说更灵活,看起来更好:

List<String> args = new ArrayList<String>(); // in a case Java 7 use new ArrayList<>();
args.add("foo");
args.add("bar");
于 2013-07-10T12:08:08.477 回答