更好的方法来实现动态数组

时间:2013-07-10 11:55:24

标签: 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" }  ;
     args  = fooferBarer;
}



//use args here .....

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

感谢阅读。

8 个答案:

答案 0 :(得分:19)

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

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

答案 1 :(得分:1)

您无法执行此操作,因为如果您有一个行声明并实例化String数组,则会调用隐式new。所以你必须明确地调用new来实例化。

考虑以下代码:

String[] args;

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

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

或者您可以使用内部使用数组的ArrayList<String>作为数据结构。

答案 2 :(得分:0)

是的,动态数组使用ArrayList

答案 3 :(得分:0)

最好将ArrayList用于动态数组。

答案 4 :(得分:0)

您可以将ArrayList用作

ArrayList<String> args = new ArrayList<String>();
args.add("Foo");
args.add("Bar");

答案 5 :(得分:0)

您必须初始化array。所以

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

答案 6 :(得分:0)

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

启动数组

答案 7 :(得分: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");