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
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」。