Give:



class Alpha {

    public String[] main = new String[2];

    Alpha(String[] main) {
        for (int ii = 0; ii < main.length; ii++) {
            this.main[ii] = main[ii] + 5;
        }
    }

    public void main() {
        System.out.print(main[0] + main[1]);
    }
}

public class Test {

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

And the commands:

javac Test.java
java Test 1 2

What is the result?

A.

1525

B.

13

C. Compilation fails
D. An exception is thrown at runtime
E. The program fails to execute due to runtime error

題解

題目執行的指令會編譯「Test.java」,由於Test類別有用public修飾,因此預設會執行Test類別的main方法,並把「1 2」作為main的參數。參數的索引值從0開始。

程式第19行,實體化Alpha物件會呼叫第5行的建構子,並傳入從命令列傳入的參數。在建構子中,會把傳入的字串陣列參數裡所有的元素都「串接」上「5」之後存進Alpha物件的main物件變數陣列對應的位置中。因此第12行程式會輸出「1525」。