問題
次のコードをコンパイル、実行するとどうなりますか。
public class Main {
private int i = 100;
public static void main(String... args) {
int i = 1000;
Main t = new Main(i);
System.out.print(i + ", ");
}
public Main(int i) {
++i;
System.out.print(i + ", ");
System.out.print(this.i + ", ");
}
}
選択肢
A)1000, 100, 1001, が出力される
B)101, 1000, 1000, が出力される
C)1001, 1001, 1001, が出力される
D)1001, 100, 1000, が出力される
E)101, 101, 1000, が出力される
F)1000, 101, 1000, が出力される
G)1001, 1001, 1000, が出力される
解答
A)1000, 100, 1001, が出力される
B)101, 1000, 1000, が出力される
C)1001, 1001, 1001, が出力される
D)1001, 100, 1000, が出力される
E)101, 101, 1000, が出力される
F)1000, 101, 1000, が出力される
G)1001, 1001, 1000, が出力される
解説
public class Main {
private int i = 100; //メンバ変数
public static void main(String... args) {
int i = 1000; //ローカル変数
Main t = new Main(i); //1. Main型でインスタンス化 Mainクラスのコンストラクタ
System.out.print(i + ", "); //6. ローカル変数の1000を出力
}
public Main(int i) { //2. 引数に1000
++i; //3. 1001になる
System.out.print(i + ", "); //4. 1001を出力
System.out.print(this.i + ", "); //5. thisを使用し、メンバ変数へアクセス. 100が出力
}
}
よって、1001, 100, 1000, を出力
対象資格:Java SE17 認定資格