Tips

Java Silver 練習問題21

Java Silver 練習問題21

Java Silverに関する問題を出題していきます!

問題1
次のプログラムをコンパイル、実行した結果として正しいものはどれか。

[java] public class Sample {
public static void main(String[] args) {
Teacher teacher = new Teacher();
teacher.setSubject("JAVA");
System.out.println(teacher.getSubject());
}
}

class Teacher {
private String subject;

public Teacher(String subject) {
this.subject = subject;
}

public void setSubject(String subject) {
this.subject = subject;
}

public String getSubject() {
return subject;
}
}
[/java]

  1. 「JAVA」と表示
  2. 何も表示されない
  3. コンパイルエラー
  4. 実行時エラー
  5. 1~4以外
解答はここをクリック!

【解答 3:コンパイルエラー】

3行目でコンパイルエラーになります。
コンストラクタに引数が渡されていません。
Teacherクラスには引数ありのコンストラクタが定義されているため、デフォルトコンストラクタは呼ばれなくなります。

 

 

問題2

次のプログラムをコンパイル、実行した結果として正しいものはどれか。

[java] public class Sample {
public static void main(String[] args) {
Teacher teacher = new Teacher();
System.out.println(teacher.subject);
}
}

class Teacher {
String subject;

public Teacher() {
this("未定義");
}

public Teacher(String subject) {
this.subject = subject;
}
}
[/java]

  1. 「未定義」と表示
  2. 何も表示されない
  3. コンパイルエラー
  4. 実行時エラー
  5. 1~4以外
解答はここをクリック!

【解答 1:「未定義」と表示】
ポイントは12行目です。
this()と書くとコンストラクタを呼び出すことが出来ます。
今回は引数なしのコンストラクタが呼ばれると、引数ありのコンストラクタが呼ばれるようになっています。

 

 

問題3

次のプログラムをコンパイル、実行した結果として正しいものはどれか。

[java] public class Sample {
public static void main(String[] args) {
msg(10);
}

static void msg(int i) {
System.out.println("int型");
}
static void msg(String str) {
System.out.println("String型");
}
}

[/java]
  1. 「int型」と表示
  2. 「String型」と表示
  3. 何も表示されない
  4. コンパイルエラー
  5. 実行時エラー
解答はここをクリック!

【解答 1:「int型」と表示】
msgメソッドが2つ定義されていますが問題ありません。
この場合は引数で区別をつけます。
これをオーバーロードといいます。
渡された引数に応じたメソッドが呼び出されます。

 

 

問題4

次のプログラムをコンパイル、実行した結果として正しいものはどれか。

[java] public class Sample {
public static void main(String[] args) {
int num = 10;
msg(num);
}

static void msg(long l) {
System.out.println("long型");
}
}
[/java]

  1. 「long型」と表示
  2. 何も表示されない
  3. コンパイルエラー
  4. 実行時エラー
  5. 1~4以外
解答はここをクリック!

【解答 1:「long型」と表示】
引数に渡しているのはint型ですが、longに渡すことも可能です。
拡大変換のルールに従っていれば問題ありません。

 

 

問題5

次のプログラムをコンパイル、実行した結果として正しいものはどれか。

[java] public class Sample {
public static void main(String[] args) {
Integer num = 10;
msg(num);
}

static void msg(long l) {
System.out.println("long型");
}

static void msg(int i) {
System.out.println("int型");
}
}
[/java]

  1. 「long型」と表示
  2. 「int型」と表示
  3. 何も表示されない
  4. コンパイルエラー
  5. 実行時エラー
解答はここをクリック!

【解答 2:「int型」と表示される】
今回引数に渡されているのはInteger型です。
integerに合致する引数がない場合はintやlongに渡すことができますが、この2つの場合はintが優先されます。
longにも渡すことができるので注意して下さい。


前回の問題  次の問題

新連載はじまりました!新Java基礎 連載リンク

はじめてのJAVA 連載

Recent News

Recent Tips

Tag Search