2017-05-28 100 views
2

給定一個名爲類是ThisClass只包含這個:Java數組聲明混亂

public static void main(String[][] args) { 
    System.out.println(args[0][1]); 
} 
public static void main(String[] args) { 
    ThisClass app = new ThisClass(); 
    String[][] newargs = {args}; 
    app.main(newargs); 
} 

如果你編譯它,然後用java ThisClass a b c運行它打印: b

...所以它的服用第一個數組並自動包裝它以適應2d數組?這很奇怪。有人可以打破這裏發生的事情嗎?我很確定我錯過了一些東西。

+2

在java中確實沒有任何'2d'數組,只是數組的數組。沒有自動換行,你需要一個數組,然後使用數組字面值語法將它固定在另一個數組中。因此你創建了一個數組數組。 – pvg

回答

1

第二個main函數被調用(以String[]作爲參數)。

在此功能中,您將創建newArgs爲僅包含一個元素的2D數組,該元素爲數組{a, b, c}

因此,當您打印args[0][1],打印位置的元素陣列{a, b, c},這是b的指數1

1

System.out.println(args[0][1]);中,args[0]相同String[]

public static void main(String[] args) { 
    ThisClass app = new ThisClass(); 
    String[][] newargs = {args}; 
    app.main(newargs); 
} 

newargs由於包含一個元件,所述String[] args。因此,你是printlng args[1]其中b