第 2 章 Java の基本 を終了させるメソッドです。 0 ( ゼロ ) であれば正常終了します。 0 ( ゼロ ) 以外で あれば異常終了します。 問題 2 - 3 main ( ) メソッドが次のように宣言されているアプリケーションをコンバイ ルして実行しようとした場合、どのような結果になりますか ( 残りのクラス コードは正しいと仮定します ) 。 解説 〇 C. 〇 A. 1 ・ コンバイルエラーが起こる wo 月 d 」が書き込まれる 〇 B. クラスは正常にコンバイルおよび実行され、標準出力に「 he 日 0 クラスはエラーなしでコンバイルされるが、プログラムは実行され Sys セ e Ⅲ . ou し . pr 土 n し ln い he110 wo て ld ” ) : public static void main ( ) { 38 はわからないので、特定のメソッドシグニチャを強制することはできません。 コンパイラは、構文のチェックしか行いません。コンパイラにはクラスの用途 public static void main(String args[] ) テムは次のシグニチャを期待しているので、エラーを報告します。 正解は選択肢 A です。クラスコードはコンパイルされますが、ランタイムシス
練習問題 問題 3 - 2 次のコードをコンバイルして実行しようとすると、どうなりますか。 public class Logic { 1 . StatiC 土 n セ minusOne static public VOid main(String args [ ] 土 n し N = minusOne > > 31 System. 0uセ . print1n("N 5 . 7 . + N 房 〇 A. プログラムはコンバイルおよび実行され、「 N= -1 」が出力される 〇 B. プログラムはコンバイルおよび実行され、「 N = 1 」が出力される 〇 C. 実行時例外 ArithmeticException が生成される 〇 D. プログラムはコンパイルおよび実行され、「 N = 0 」が出力される 3 練習問題 正解は選択肢 A です。 > > 演算子は、符号を拡張するシフト演算子です。 > > 演算 子ではなく > > > 演算子を使ったとしたら、符号ビットがゼロになるので、プログ ラムはコンパイルおよび実行され、「 N = 1 」が出力されるはずです。しかし、 > > > 演算子を使っていないので、選択肢 B は不正解です。 ArithmeticException 例外が 生成されるのはシフト演算ではなく、整数をゼロで除算した場合です。したがっ て、選択肢 c は不正解です。 > > 演算子によるシフトでは符号が拡張されるので、 選択肢 D の結果にはなりません。
第 4 章 Java クラスの作成 問題 4 - 2 次のようなクラスがあるとします。 1 . class Widget extends Thingee { maxWidgetSize = れⅨ public Widget ( 土 n セれⅨ′ String T static String T 土し 1e static final 土 n し maxWidgetSize 40 6 . Tit1e = T / / ほかのコード このコードをコンバイルし、次に示すコードで Widget オブジェクトを作成 するプログラムを実行しようとすると、どうなりますか。 〇 D. 6 行目でコンバイルエラーが起こる 〇 C. 5 行目でコンバイルエラーが起こる コンバイルはできるが、 5 行目で実行時工ラーが起こる コンバイルと実行は正常に行われる Widget 呵土 dge し = new Widget ( 50 , "Bigger Widget" ) : 〇 B. 〇 A. 10 . 1 02 ることは可能です。 D は不正解です。血として宣言されていない変数であればアクセスし、変更す るので、選択肢 A と選択肢 B は不正解です。 6 行目は正しいコードなので、選択肢 いので、これがコンパイルエラーの原因となります。コンパイルでエラーが起こ 正解は選択肢 C です。 s ねⅱ c 血として宣言された変数を更新することはできな 解説
模擬試験 問模擬試験 問題 6 次のような Widget クラスがあります。 class Widget extends Thingee { 1 . static private 土 n セ widgetCount public String wName 土れし wNumber 4 . 7 . 10 . 11 . 12 . 0 private static synchronized 土 n セ addWidget ( ) { return + + widgetCount public Widget ( ) { wNumber addWidget ( ) : このクラスをコンバイルし、プログラム内で複数の Widget オブジェクトを 使おうとすると、何が起こりますか。このプログラムでは複数のスレッドを 使って Widget オブジェクトを作成します。 〇 A. クラスはコンバイルされ、各 Widget オブジェクトには作成された順 序を表す一意の wNumber 値が与えられる 〇 B. 10 行目の staticaddWidget() メソッド呼び出しについてコンバイル 工ラーが発生する 〇 c. addWidget() メソッド内でランタイムエラーが発生する 〇 D. クラスはコンパイルされ、各 Widget オブジェクトに wNumber 値が 与えられるが、この値が一意であるとはかぎらない 409
第 3 章基本データ型とオブジェクトへの演算子の作用 次のコードをコンバイルして実行しようとすると、どうなりますか。 問題 3 - 9 〇 D. 4 行目で実行時にキャストエラーが起こる 〇 C. 4 行目でコンバイルエラーが起こる 〇 B. コンバイルおよび実行され、「 Not EquaIJ が出力される コンバイルおよび実行され、「 EquaIJ が出力される else System. 0uし . pr 土 n し 10 い NO し Equa1" ) : if ( L. equals ( 7L ) ) Sys む . ou し p て土れし ln い E 1a1 " 房 Long L = new Long ( 7 ) : public static void main(String args [ ] ) { public class Equa1sTest{ 解説 〇 A. 3 . 1 . 78 は不正解です。 でなければなりません。プログラムはコンパイルされないので、選択肢 A 、 B 、 D 正解は選択肢 C です。 equ ホ ( ) メソッドの入力は、基本データ型ではなく Object
第 6 章基本データ型とオプジェクトの変換とキャスト で、選択肢 C のステートメントはコンパイルエラーになります。選択肢 D は、コ ンパイルはできますが、実行するとエラーになります。キャストはコンパイラでは チェックされませんが、このステートメントを実行すると心 ase 参照の型がチェッ クされ、 ClassCastException 例外が生成されます。 問題 6 - 5 ApBase クラスを次のように宣言しました。 、 Trick!• class ApBase extends Obj ect implements Runnab1e 次に示すコードでは、 ApBase オブジェクトへの参照を受け取って、さま ざまな変数にそれを代入しています。このコードをコンバイルして実行しよ うとすると、どうなりますか。 〇 D. 正常にコンバイルされ、実行される Exception が生成される コンバイルは正常に完了するが、実行時に 4 行目で C ね ssCast 〇 B. 3 行目でコンバイルエラーになる 〇 A. 2 行目でコンバイルエラーになる ApBase x = (ApBase)obj Obj ect Obj = aR Runnab1e aR = aBase ApBase aBase new ApBase ( ) : 解説 〇 C. 4 . 3 . 2 . 1 . 150 トメントです。オプジェクトにインタフェースが実装されていることがコンパイ 正解は選択肢 D です。このコードのキャストと代入は、いずれも正しいステー
練習問題 問題 4 - 3 次のコードを含む Widget クラスがあります。 1 . class Widget extends Thingee{ static private 土 n し widgetCount public String wName 土 n む wNumber 10 . 11. 12 . 13 . 14 . 0 static synchronized 土 n し addWidget ( ) { widgetCount + + “工 am Widget # wName return widgetCount public Widget ( ) { wNumber + widgetCount addwidget ( 房 4 練習問題 このクラスをコンバイルし、プログラム内で複数の Widget オブジェクトを 使おうとすると、どうなりますか。 〇 A. コンバイルは正常に完了し、各 Widget オブジェクトは作成された順 序に従って一意な wNumber と wName を取得する 0 B. 8 行目でコンバイルエラーが起こる 〇 C. コンバイルは正常に完了するが、 addWidget メソッドで wName 変 数にアクセスするときに実行時工ラーが起こる 解説 正解は選択肢 B です。静的メソッド addW1dget では、メンバ変数 wName にア クセスできません。静的メソッドは、静的変数 ( etCount など ) にしかアクセス できません。コンパイルエラーが起こるので、選択肢 A と選択肢 C は不正解です。 103
第 3 章基本データ型とオブジェクトへの演算子の作用 次のコードをコンバイルして実行しようとすると、どうなりますか。 問題 3 - 7 1 . 4 . 5 . 〇 B. 〇 C. 解説 public class Eq ユ aIsTest { if ( A = Char public System. out . println ( " NO し E 1a1 " ) ー 0X0005L ) System. 0uセ . pr 土 n セ ln い E ユ al " 房 A u0005 ー static VOid main ( string args [ ] ) { 〇 A. 3 行目で、不正な文字が入力されたことを報告するコンバイルエラー が起こる コンバイルされ、「 EqualJ が出力される コンバイルされ、「 NotEquaIJ が出力される 正解は選択肢 C です。変数 A は、 4 行目で long 型に変換されてから比較されま す。不正な文字が入力されたことを報告するコンパイルエラーが、 3 行目で起こる ことはありません。この文字は U ⅲ code の文字コードを表すからです。したがっ て、選択肢 A は不正解です。選択肢 C が正解なので、選択肢 B が正解である可能 性はありません。 76
第 4 章 Java クラスの作成 s ねⅱ c などのアクセス修飾子の誤った使い方はコンパイラで検出されるので、この 点でも選択肢 C は不正解です。 問題 4 - 4 次のコードを含む Widget クラスがあります。 1 . 5 . 10 . 11 . 12 . class Widget extends Thingee { static private 土 n し widgetCount public String wName 土 n セ wNumber 0 private static synchronized 土 n し addWidget ( ) { return + + widgetCount public Widget ( ) { addWidget ( 房 wNumber このクラスをコンバイルし、プログラム内で複数のスレッドを使って複数 の Widget オブジェクトを作成しようとすると、どうなりますか。 〇 A. コンパイルは正常に完了し、各 Widget オブジェクトは作成された順 序に従って一意な wNumber を取得する 〇 B. 10 行目の静的メソッド addWidget の呼び出しでコンバイルエラーが 起こる 〇 C. addWidget メソッドで実行時工ラーが起こる 〇 D. コンバイルは正常に完了し、各 Widget オブジェクトは wNumber を 取得するが、値が一意である保証はない 1 04
模擬試験 問模擬試験 問題 1 次のような Demo クラスと DerivedDemo クラスの定義があります。 1 . public class Demo extends Object { String Tit1e public Demo (String し ) { T 土に 1e = し 5 . public VOid showTitle ( ) System. 0uセ . print1n("Tit1e is 10 . class DerivedDemo extends Demo { public VOid setTitle( String セし ) 11. - { T 土し le + T 土に le ) : 12 . このコードをコンバイルして De ⅱ vedDemo オブジェクトを作成し、そのオ ブジェクトの showTit 耳 ) メソッドを呼び出そうとすると、何が起こりますか。 〇 A. 「 TitIeisnuIlJ というメッセージが標準出力に書き込まれる 〇 B コンバイラが De ⅱ vedDemo クラスについてのエラーを報告する 0 C. 7 行目で NuIIPointerException が生成される 405