以下に、Java SE11 Silver試験向けの「パッケージに関する5択問題×10問」について、各問の正解選択肢は穴埋め問題として再出題、各問の不正解選択肢(4つ)をすべて誤文訂正問題として再出題。
【5択問題 × 10問 + 穴埋め × 10問 + 誤文訂正 × 40問】
問1 Javaでパッケージを定義するには、どのように記述する必要があるか?
A. クラス宣言の下にpackageを記述する
B. メソッド内にpackageを記述する
C. ファイル末尾にpackageを記述する
D. ソースファイルの最初にpackageを記述する
E. package文は省略しなければならない
正解:D
解説: package文はソースファイルの最初に書く必要がある。クラスやメソッドの内部、末尾には記述できない。
穴埋め問題
Javaでパッケージを定義するには、ソースファイルの最初に ________ を記述する。
→ package文
誤文訂正問題
誤:クラス宣言の下にpackageを記述する。
→ 正:クラス宣言の前に記述する。
誤:メソッド内にpackageを記述する。
→ 正:メソッド内には記述できない。
誤:ファイル末尾にpackageを記述する。
→ 正:ファイルの先頭に記述する。
誤:package文は省略しなければならない。
→ 正:省略可能だが、記述したほうが明確で管理しやすい。
---
問2 次のうち、import文に関して正しいものはどれか?
A. import文はJava 11では非推奨である
B. import文を使っても完全修飾名でクラスを記述する必要がある
C. import文は必ず複数記述しなければならない
D. import文を使うと完全修飾名を省略できる
E. import文の使用はコンパイルエラーを引き起こす
正解:D
解説: import文を使えば、クラス名を完全修飾名で書く必要がなくなる。
穴埋め問題
import文を使うと、クラス名の ________ を省略して使用できる。
→ 完全修飾名
誤文訂正問題
誤:import文はJava 11では非推奨である。
→ 正:現在でも有効に使用されている。
誤:import文を使っても完全修飾名で記述する必要がある。
→ 正:完全修飾名は省略できる。
誤:import文は必ず複数記述しなければならない。
→ 正:1つでも記述できるし、省略も可能。
誤:import文の使用はコンパイルエラーを引き起こす。
→ 正:正しく使用すれば問題なく動作する。
---
問3 privateアクセス修飾子の説明として正しいものはどれか?
A. 同じパッケージのクラスからアクセスできる
B. 同じクラス内でのみアクセス可能である
C. サブクラスからアクセスできる
D. 他パッケージのクラスからアクセスできる
E. すべてのクラスからアクセスできる
正解:B
解説: privateは定義されたクラス内からしかアクセスできない。他のクラスからは同一パッケージでもアクセス不可。
穴埋め問題
private修飾子は、 ________ からのみアクセス可能である。
→ 同一クラス内
誤文訂正問題
誤:同じパッケージのクラスからアクセスできる。
→ 正:privateは他クラスからアクセス不可。
誤:サブクラスからアクセスできる。
→ 正:privateは継承しても見えない。
誤:他パッケージのクラスからアクセスできる。
→ 正:一切アクセス不可。
誤:すべてのクラスからアクセスできる。
→ 正:アクセスできるのは定義クラスのみ。
問4 次のうち、package文に関する正しい記述はどれか?
A. 1つのJavaファイルに複数のpackage文を書くことができる
B. package文の後にimport文を書いてはいけない
C. package文はファイル内のどこに書いてもよい
D. package文を省略するとデフォルトパッケージになる
E. package文はクラスの中に記述する必要がある
正解:D
解説: package文を省略した場合、デフォルトパッケージに属する扱いになる。記述する場合はファイル先頭のみでよい。
穴埋め問題
package文を省略すると、そのクラスは ________ に属する。
→ デフォルトパッケージ
誤文訂正問題
誤:1つのJavaファイルに複数のpackage文を書くことができる。
→ 正:package文は1ファイルに1つのみ記述可能。
誤:package文の後にimport文を書いてはいけない。
→ 正:packageの後にimport文を書くのが通常。
誤:package文はファイル内のどこに書いてもよい。
→ 正:ファイルの最上部に書く必要がある。
誤:package文はクラスの中に記述する必要がある。
→ 正:クラスの外、ソースファイルの先頭に記述する。
---
問5 同名クラス(例:Date)が異なるパッケージに存在する場合の正しい扱いはどれか?
A. 両方のパッケージをimport文で明示的に指定できる
B. どちらか一方しかimportできず、他方は完全修飾名で使う
C. import文は1つのクラスに対して複数記述できない
D. クラス名が同じでも常に曖昧にはならない
E. 両方を同時にimport staticで指定すれば使える
正解:B
解説: 同名クラスを両方importすると曖昧になるため、どちらかをimportし、もう片方は完全修飾名で指定する。
穴埋め問題
同名クラスを複数のパッケージから使うには、片方は ________ で使用する必要がある。
→ 完全修飾名
誤文訂正問題
誤:両方のパッケージをimport文で明示的に指定できる。
→ 正:クラス名が重複するため、片方は完全修飾名で使用する必要がある。
誤:import文は1つのクラスに対して複数記述できない。
→ 正:可能だが、同名クラスは曖昧になるため注意が必要。
誤:クラス名が同じでも常に曖昧にはならない。
→ 正:同名クラスを同時に使うと曖昧になりエラーの原因になる。
誤:両方を同時にimport staticで指定すれば使える。
→ 正:import staticはstaticメンバ用であり、クラス自体のインポートとは異なる。
---
問6 java.langパッケージに関する説明として正しいものはどれか?
A. 明示的にimport文で読み込まないと使用できない
B. SystemやStringなどの基本クラスは含まれない
C. Javaコンパイラが自動的に読み込むためimport不要
D. java.langは非推奨のパッケージである
E. java.langはJava 11以降使用できない
正解:C
解説: java.langパッケージはJavaで最も基本的なパッケージで、自動的に読み込まれる。
穴埋め問題
java.langパッケージは、 ________ によって自動的に読み込まれる。
→ コンパイラ
誤文訂正問題
誤:明示的にimport文で読み込まないと使用できない。
→ 正:自動的に読み込まれるため不要。
誤:SystemやStringなどの基本クラスは含まれない。
→ 正:それらはjava.langに含まれている。
誤:java.langは非推奨のパッケージである。
→ 正:非推奨ではない。
誤:java.langはJava 11以降使用できない。
→ 正:今も使用されている標準パッケージである。
---
問7 protected修飾子の特性として正しいものはどれか?
A. 他パッケージのすべてのクラスからアクセスできる
B. 同じパッケージまたはサブクラスからアクセスできる
C. privateと同じ挙動を示す
D. アクセス範囲に制限がない
E. アクセス修飾子が指定されていない状態と同じ
正解:B
解説: protectedは同一パッケージまたは他パッケージのサブクラスからアクセスできる。
穴埋め問題
protected修飾子は、同一パッケージまたは ________ からアクセスできる。
→ サブクラス
誤文訂正問題
誤:他パッケージのすべてのクラスからアクセスできる。
→ 正:他パッケージでもサブクラスからのみアクセス可能。
誤:privateと同じ挙動を示す。
→ 正:privateはクラス内限定、protectedはパッケージとサブクラスにも可。
誤:アクセス範囲に制限がない。
→ 正:範囲は制限されている。
誤:アクセス修飾子が指定されていない状態と同じ。
→ 正:protectedはそれより広いアクセス範囲を持つ。
---
問8 次のうち、import java.util.*;を記述した場合の正しい説明はどれか?
A. java.utilのクラスは全て自動的に読み込まれる
B. java.utilのすべてのクラスとサブパッケージが読み込まれる
C. java.util.ListやMapは使用できない
D. importしなくても使えるようになるのはjava.langのみである
E. import文は動的に変更される
正解:A
解説: java.util.*;はそのパッケージ内のクラス全てをインポートするが、サブパッケージまでは含まない。
穴埋め問題
import java.util.*; を使うと、 ________ 配下のクラスが使用可能になる。
→ java.util
誤文訂正問題
誤:java.utilのすべてのクラスとサブパッケージが読み込まれる。
→ 正:クラスのみで、サブパッケージは対象外。
誤:java.util.ListやMapは使用できない。
→ 正:それらも読み込まれる。
誤:importしなくても使えるようになるのはjava.langのみである。
→ 正:他は明示的にimportが必要。
誤:import文は動的に変更される。
→ 正:静的に記述される。
---
問9 Javaにおけるパッケージ名の命名規則として適切なのはどれか?
A. 全て英語で構成する必要がある
B. クラス名と同じ名前は使えない
C. 数字を含めてはならない
D. ドメイン名を逆にした形式で命名するのが慣例
E. パッケージ名には必ずアンダースコアを含める
正解:D
解説: Javaの慣例では、com.example.appのようにドメインを逆順にした名前を用いる。
穴埋め問題
パッケージ名は、 ________ を逆にした形式で命名するのが慣例である。
→ ドメイン名
誤文訂正問題
誤:全て英語で構成する必要がある。
→ 正:英語以外も使えるが、一般には英語が推奨されている。
誤:クラス名と同じ名前は使えない。
→ 正:重複してもパッケージとクラスは区別される。
誤:数字を含めてはならない。
→ 正:数字を含めることは可能。
誤:パッケージ名には必ずアンダースコアを含める。
→ 正:アンダースコアは任意であり、含める必要はない。
---
問10 次のうち、Javaのパッケージに関する誤った記述はどれか?
A. パッケージを分けることで名前の衝突を防げる
B. パッケージはクラスを論理的に分類する
C. パッケージ構成はディレクトリ構造に依存しない
D. import文で他のパッケージのクラスを使用できる
E. package文がないとデフォルトパッケージになる
正解:C
解説: Javaではパッケージ構成とファイルのディレクトリ構造は一致している必要がある。
穴埋め問題
Javaのパッケージ構成は、 ________ 構造と一致している必要がある。
→ ディレクトリ
誤文訂正問題
誤:パッケージ構成はディレクトリ構造に依存しない。
→ 正:Javaではパッケージ名=フォルダ階層。
誤:パッケージを分けることで名前の衝突を防げない。
→ 正:防ぐことができる。
誤:import文で他のパッケージのクラスを使用できない。
→ 正:使用できる。
誤:package文がないとコンパイルできない。
→ 正:package文がないとデフォルトパッケージに属する。

※糞遅いJavaはC++に56されるべきだwww


Oracle JAVA Silverの4択問題4問を出題してください。正解と解説もお願いします。
- 以下のコードを実行した場合、どのような結果が返されるでしょうか?
int[] numbers = {1, 2, 3};
System.out.println(numbers[3]);
a) 1
b) 2
c) 3
d) IndexOutOfBoundsExceptionがスローされます。
【正解】 d) IndexOutOfBoundsExceptionがスローされます。
【解説】 配列の要素数は3ですが、numbers[3]
という配列の範囲外のインデックスを指定しています。そのため、IndexOutOfBoundsExceptionがスローされます。
- 以下のコードを実行した場合、どのような結果が返されるでしょうか?
String str = "Java";
str.concat("SE 11");
System.out.println(str);
a) Java
b) JavaSE 11
c) SE 11
d) NullPointerExceptionがスローされます。
【正解】 a) Java
【解説】 String
はimmutable(不変)です。つまり、concat()
メソッドは元の文字列を変更せず、新しい文字列を作成します。しかし、新しい文字列が元のstr
に代入されていないため、str
の値は変わらずに"Java"のままです。
- 以下のコードを実行した場合、どのような結果が返されるでしょうか?
String str = "Java";
str = str.concat("SE 11");
System.out.println(str);
a) Java
b) JavaSE 11
c) SE 11
d) NullPointerExceptionがスローされます。
【正解】 b) JavaSE 11
【解説】 concat()
メソッドで新しい文字列が作成され、str
に再代入されています。そのため、str
の値は"JavaSE 11"に変わります。
- 以下のコードを実行した場合、どのような結果が返されるでしょうか?
int x = 1;
switch (x) {
case 1:
System.out.println("A");
case 2:
System.out.println("B");
default:
System.out.println("C");
}
a) A
b) A, B
c) A, B, C
d) B
【正解】 c) A, B, C
【解説】 switch
文のcase
ブロックには、break
文がないため、case 1
が一致した場合は"A"が出力され、その後のcase 2
とdefault
ブロックも実行されます。そのため、"B"と"C"も出力されます。
