2013-07-10 42 views
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 ..... 

這看起來非常奇怪..Any更好的方法呢??

感謝您的閱讀。

回答

19

要實例上比報關行以外的線陣列,您可以使用:

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

臉掌..非常感謝你:) –

0

這是更好地使用動態數組的ArrayList 。

0

您可以使用ArrayList的,

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

你必須初始化array的任何方式。所以

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

因爲String[] args = {"FOO", "BAR"};是Java語法的規則。您可以使用值初始化數組,但args={"FOO", "BAR"};在語法上是錯誤的,因爲這是Java,而不是Python。所以,你應該啓動陣列這樣args= new String[]{"FOO", "BAR"};

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)我會sugest你這樣子,而不是使用的String []使用清單,作爲對我來說更加靈活,更好看:

List<String> args = new ArrayList<String>(); // in a case Java 7 use new ArrayList<>(); 
args.add("foo"); 
args.add("bar"); 
1

你不能這樣做,因爲如果你有一行聲明並實例化一個String數組,然後調用一個隱含的new。所以你必須明確地調用new來實例化。

考慮以下代碼:

String[] args; 

因爲它是現在,args只是一個參考變量,不指向任何對象。要指向一個對象,你必須調用new明確地喜歡它實例:

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

或者你可以使用ArrayList<String>其內部使用數組作爲數據結構。

相關問題