Tips

Java Silver 練習問題18

Java Silver 練習問題18

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

問題1
「30」と表示させるためには①にどのようなコードを記述すればよいか、選択肢の中から全て選べ。

[java] public class Sample {
public static void main(String[] args) {
Number n = new Number();
int sum = /* ① */;
System.out.println(sum);
}
}
class Number {
static int a = 10;
int b = 20;
}
[/java]
  1. Number.a + Number.b
  2. n.a + Number.b
  3. Number.a + n.b
  4. n.a + n.b
  5. 当てはまるものはない
解答はここをクリック!

【解答 3,4:「Number.a + n.b」と「n.a + n.b」】

Numberクラス内の変数aはstatic変数、bはインスタンス変数です。
static変数にアクセスするためには「クラス名.変数名」または「参照変数.変数名」を付けます。
ただし、参照変数による呼び出しは推奨されません。
インスタンス変数を呼び出す場合は「参照変数名.変数名」です。
インスタンス変数はクラス名をもとに呼び出すことはできません。

 

問題2

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

[java] public class Sample {
public static void main(String[] args) {
int sum = sum(10, 20);
System.out.println(sum);
}
int sum(int x, int y) {
return x + y;
}
}
[/java]
  1. 「30」と表示
  2. 「0」と表示
  3. 何も表示されない
  4. コンパイルエラー
  5. 実行時エラー
解答はここをクリック!

【解答 4:コンパイルエラー】
3行目でsumメソッドを呼び出していますが、sumメソッドはインスタンスメソッドなのでインスタンス化しないと呼び出すことはできません。

 

問題3

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

[java] public class Sample {
public static void main(String[] args) {
Sample s = new Sample();
s.show("Hello");
}

void show(String str) {
System.out.println(str);
}
}
[/java]

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

【解答 1:「Hello」と表示】
showメソッドはインスタンスメソッドなのでインスタンス化しないと呼び出すことはできません。
今回はちゃんと3行目でインスタンス化が行われています。

 

問題4

「ポチ」と表示させるためには①にどのようなコードを記述すればよいか、選択肢の中から選べ。

[java] public class Sample {
public static void main(String[] args) {
System.out.println(/* ① */);
}
}

class Dog {
String name = "ポチ";
}
[/java]

  1. name
  2. Dog.name
  3. dog.name
  4. new Dog().name
  5. 当てはまるものはない
解答はここをクリック!

【解答 4:new Dog().name】
new Dog()の部分がオブジェクトになります。
今回は変数に代入することなく呼び出しています。

 

問題5

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

[java] public class Sample {
public static void main(String[] args) {
Cat cat1 = new Cat();
Cat cat2 = new Cat();
System.out.println(cat1.name == cat2.name);
}
}

class Cat {
String name = "タマ";
}
[/java]

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

【解答 1:「true」と表示】
==演算子でオブジェクト参照型を比較すると値の比較ではなく参照の比較になります。
しかしString型は同じ文字列がメモリ内に存在する場合は自動で同じ参照となります。
同じ文字列だけど参照先が異なるのはStringオブジェクトがインスタンス化された場合です。


前回の問題  次の問題

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

はじめてのJAVA 連載

Recent News

Recent Tips

Tag Search