コアJavaクイズ
コアJavaクイズへようこそ。Javaはオブジェクト指向プログラミング言語です。
コアJavaクイズ
このクイズでは、Core Javaの基礎とOOPSの概念についてテストされます。いくつかのコードスニペットもあり、基本的なJavaのコーディングスキルをテストします。
いくつかの質問には複数の答えがあります。正解と説明を見るために「答えを表示する」ボタンをクリックすることができます。
気に入ったら挑戦して他の人と共有してみてください。
以下のうち、Javaで配列をインスタンス化するために正しい方法はどれですか?
A. myArrayには1、3、5が入った整数の配列を定義する。
B. myArrayには1から4までの整数が入った2次元の配列を定義する。
C. myArrayには5、4、3が入った整数の配列を定義する。
D. myArrayには”1″、”2″、”3″が入った文字列の配列を定義する。
(5, 4, 3);を含むint型の配列myArray = (5, 4, 3);は無効です。配列要素は波括弧({})で定義する必要があるためです。
myArray [] [] = {1,2,3,4};を含むint型の配列myArrayは無効です。この場合、myArrayは二次元配列として定義されるべきですが、一次元配列として定義されています。コンパイラは「タイプミスマッチ:intからint []に変換できません」とエラーを報告します。
2. 以下の中で、Javaにおける予約語はどれですか?
A. 配列 (はいれつ)
B. ジャンプ (じゃんぷ)
C. ヌル (ぬる)
D. 整数 (せいすう)
3. 以下のプログラムをコンパイルして実行した場合、どうなりますか?
interface Foo{ int x = 10;}
public class Test {
public static void main(String[] args) {
Foo.x = 20;
System.out.println(Foo.x);
}
}
A. 10を出力する。
B. 20を出力する。
C. コンパイル時エラー。
D. Foo.xがfinalなので、ランタイムエラーが発生する。
「下記のプログラムの出力は何になりますか?」
public class Test {
public static void main(String[] args) {
char c = 65;
System.out.println("c = " + c);
}
}
A. コンパイル時エラー
B. 「c = A」と出力する
C. 実行時エラー
D. 「c = 65」と出力する
以下のプログラムの出力は何ですか?
public class Test {
public void main(String[] args) {
int x = 10*20-20;
System.out.println(x);
}
}
A. ランタイムエラー
B. 180を出力します
C. 0を出力します
D. コンパイル時エラー
メインメソッドが静的でないため、実行時エラーが発生します。エラーメッセージは、「Testクラスのメインメソッドは静的ではありません。メインメソッドを次のように定義してください:public static void main(String[] args)」となります。
6. Javaにおけるstaticキーワードの有効な記述は何ですか?
A. クラス内には静的ブロックを持つことができます。
B. クラス内の静的ブロックは、クラスのオブジェクトが作成されるたびに実行されます。
C. インターフェースには静的メソッドの実装を持つことができます。
D. メソッド内に静的ブロックを定義することができます。
7. オブジェクト指向プログラミングの中核概念をすべて選択してください。
A. 抽象化 (ちゅうしょうか)
B. 継承 (けいしょう)
C. インターフェース
D. ポリモーフィズム
E. ジェネリクス
2. カプセル化
3. 多態性
4. 継承
5. 組み合わせ
6. 関連
7. 集約
詳しくはOOPSの概念をご覧ください。
8. ジャバにおける継承に関して以下の記述のうち、真実なものはどれですか?
A. 「extend」というキーワードは、Javaでクラスを拡張するために使用されます。
B. Javaでは、複数のクラスを拡張することができます。
C. スーパークラスのプライベートメンバーは、サブクラスからアクセスすることができます。
D. Javaでは、Finalクラスを拡張することはできません。
正解:D
Javaにおける継承は、基本的な概念の一つです。それについてよく知っておくべきです。回答の選択肢について詳しく学ぶために、以下の記事をお読みください – Javaにおける継承、Javaにおける多重継承。
9. 以下のプログラムの出力は何になりますか?
package com.scdev.java;
public class Test {
public static void main(String[] args) {
Super s = new Subclass();
s.foo();
}
}
class Super {
void foo() {
System.out.println("Super");
}
}
class Subclass extends Super {
static void foo() {
System.out.println("Subclass");
}
}
A. コンパイル時エラー (Konpairuji jikan erā)
B. スーパー (Sūpā)
C. サブクラス (Sabu kurasu)
D. ランタイムエラー (Rantaimu erā)
10. 以下のプログラムの出力は何になりますか?
package com.scdev.java;
public class Test {
public static void main(String[] args) {
Subclass s1 = new Subclass();
s1.foo(); // line 6
Super s = new Subclass();
s.foo(); // line 8
}
}
class Super {
private void foo() {
System.out.println("Super");
}
}
class Subclass extends Super {
public void foo() {
System.out.println("Subclass");
}
}
A. 6行目でコンパイル時エラーが発生します。
B. 8行目でコンパイル時エラーが発生します。
C. 6行目と8行目の両方でコンパイル時エラーが発生します。
D. 正常に動作し、「サブクラス」と2回表示されます。
11. 以下のプログラムの出力は何になりますか?
import java.io.IOException;
public class Test {
public static void main(String[] args) {
try {
throw new IOException("Hello");
} catch (IOException | Exception e) {
System.out.println(e.getMessage());
}
}
}
A. コンパイル時エラー
B. 「こんにちは」と表示する
C. ランタイムエラー
正しい答え: A
コンパイル時エラーが発生しました。IOException例外はすでに代替のExceptionによってキャッチされています。
12. 以下のプログラムの出力は何になりますか?
public class Test {
public static void main(String[] args) {
String x = "abc";
String y = "abc";
x.concat(y);
System.out.print(x);
}
}
A. abcabc -> アービーシーアービーシー
B. abc -> アービーシー
C. null -> ヌル
13. 以下のうち、Javaで未チェックの例外はどれですか?
A. RuntimeException: ランタイム例外
B. ClassCastException: クラスキャスト例外
C. NullPointerException: ヌルポインタ例外
D. IOException: 入出力例外
RuntimeException クラスとそのサブクラスはチェックされていない例外です。チェックされていない例外は、メソッドやコンストラクタの throws 句で宣言する必要はありません。
14. 以下のプログラムの出力は何になりますか?
package com.scdev.java;
import java.io.IOException;
public class Test {
public static void main(String[] args) {
try {
throw new Exception("Hello ");
} catch (Exception e) {
System.out.print(e.getMessage());
} catch (IOException e) {
System.out.print(e.getMessage());
} finally {
System.out.println("World");
}
}
}
A. コンパイル時エラー (Konpairu-ji erā)
B. こんにちは (Konnichiwa)
C. こんにちは世界 (Konnichiwa sekai)
D. こんにちは こんにちは世界 (Konnichiwa konnichiwa sekai)
15. Javaについて以下の文中のどれが真実ですか?
A. JVMはバイトコードをマシン固有のコードに変換する責任を持っています。
B. Javaプログラムを実行するには、JREが必要です。
C. JavaプログラムをコンパイルするにはJDKが必要です。
D. JREにはJVMが含まれていません。
正しい答え: A、B、C
詳しい説明については、JDK、JRE、およびJVMを読んでください。
16. javaのクラス内には2つのメインメソッドを持つことはできますか?
A. はい
B. いいえ
正解:A
これは難しい問題でした。Javaでは、メソッドオーバーロードを通じて「main」という名前の複数のメソッドを持つことができます。
17. Javaにおけるアノテーションに関する以下の記述のうち、正しいものはどれですか?
A. カスタムアノテーションを作成するために、@interfaceキーワードが使用されます。
B. @OverrideはJavaの組み込みアノテーションです。
C. アノテーションはクラスのフィールドには適用できません。
D. @RetentionはJavaのメタアノテーションの一つです。
E. クラスがコンパイルされると、Javaのアノテーション情報は失われます。
18.JavaにおけるEnumに関して、以下の記述のうち真実なものはどれですか?
A. 全てのJavaのenumは暗黙的にjava.lang.Enumクラスを拡張しています。
B. Javaのenumはインターフェースを実装することができます。
C. new演算子を使用してenumのインスタンスを作成することができます。
D. switch文ではenumは使用できません。
E. enumの定数は暗黙的にstaticでfinalです。
19. Javaにおいて、以下の中で組み込みのクラスローダーはどれですか?
A. ブートストラップクラスローダー
B. 拡張クラスローダー
C. ランタイムクラスローダー
D. システムクラスローダー
正解: A、B、D
「JavaにおけるクラスローダーについてはClassloaders in Javaを参照してください。」
以下のプログラムの出力は何になりますか?
package com.scdev.util;
public class Test {
public static String toString() {
System.out.println("Test toString called");
return "";
}
public static void main(String args[]) {
System.out.println(toString());
}
}
A. “テストtoStringが呼び出されました”
B. コンパイル時エラー
C. “Test@7fh2bd8” (ObjectクラスのtoString()メソッドが呼び出されています)
以下のプログラムの出力は何になりますか?
public class Test {
public static void main(String[] args) {
String s1 = "abc";
String s2 = "abc";
System.out.println("s1 == s2 is:" + s1 == s2);
}
}
A. s1とs2が等しい:true
B. false
C. s1とs2が等しい:false
D. true
結論
コアJavaクイズがお気に入りでしたら嬉しいです。もし私が重要な分野を見落としていると思ったら、教えてください。そうすれば、もっと難しいクイズの問題を追加します。
次のクイズ:Javaの文字列クイズ