徹底攻略Oracle認定JavaプログラマSE 6問題集 [CX-310-065]対応

徹底攻略Oracle認定JavaプログラマSE 6問題集 [CX-310-065]対応

¥3,200+税

品種名
書籍
発売日
2011/1/21
ページ数
392P
サイズ
A5判
著者
志賀澄人・米山 学 著
ISBN
9784844329770

Javaプログラマ試験を熟知した著者による厳選272問

Javaプログラマの登竜門であるOracle認定Javaプログラマ試験の最新バージョン試験「Javaプログラマ SE6」試験(OCJ-P)に対応した問題集です。OCJ-P SE6の試験範囲を分析し、出題傾向にあった問題272問を用意しました。解答解説を読むことで、どこが間違っているかを理解することによって、合格に直結する知識が身につき、より深く内容が理解できます。初めてJavaプログラマ試験を受験する方はもちろん、前バージョンのSE5の資格を保持している方がOCJ-P SE6へステップアップする際にもお薦めの一冊です。

「読者アンケートに答える」「読者プレゼントに応募」の場合もこちらをご利用ください。

アンケートに答える

書籍の内容に関するお問い合わせはこちら。お答えできるのは本書に記載の内容に関することに限ります。

学校・法人一括購入に関するお問い合わせはこちらへ。

一括購入窓口

詳細


■著者プロフィール
志賀 澄人(しが・すみひと)
関西のSI企業にて業務システムの開発に携わり、人材育成の重要性を肌で感じて、教育の道へ。株式会社豆蔵で教育チームの企画リーダーを経て、現在は独立。
「わかる=楽しい=もっと知りたい」を実感できる講座を、京都人ならではの「はんなり関西弁」で実施している。
米山 学(よねやま・まなぶ)
フリーランスの講師、ライター、教育コンサルタント。
Javaや.NET、C/C++のプログラミングを中心にデータベースからネットワーク、サーバ構築(Windows、UNIX/Linux)、オブジェクト指向分析設計、セキュリティ、テスト技法など、ITテクノロジー全般の教育に携わっている。机上理論だけで終わることのない、手を動かして楽しく学べる研修を実践中。

関連書籍

好評発売中

徹底攻略 ORACLE MASTER Bronze DBA 12c 問題集  [1Z0-065]対応

しっかり知識が身に付く“学べる問題集”。

好評発売中

徹底攻略 Java SE 7/8 Bronze 問題集 [1Z0-814]対応

最新のJava SE 7/8 Bronze試験に完全対応!

好評発売中

徹底攻略Java SE 7 Silver問題集[1Z0-803]対応

これ一冊でOK!きちんと理解できる問題集。

ダウンロード

本製品の読者さまを対象としたダウンロード情報はありません。

お詫びと訂正

誤記のためにご迷惑をおかけし、誠に申し訳ございません。

  • 0ページ 解答全般
    • [誤]「実行時例外がスローされる」
    • [正]「実行時に例外がスローされる」
    • 備考:

      本書の解答全般にて「実行時例外がスローされる」との記述がありますが、これを「実行時に例外がスローされる」に訂正いたします。

    • 【 第3刷にて修正 】
  • 6ページ 6行目
    • [誤]20011年
    • [正]2011年
    • 【 第3刷にて修正 】
  • 52ページ 解答6、1~10行目
    • [誤]以下に差し替えいたします。
    • [正]配列の初期化に関する問題です。配列の初期化の書式は以下のとおりです。



      【書式】

      データ型[] 配列型変数名 = {値1, 値2, 値3……};



      また、配列オブジェクトを生成する場合の書式は以下のとおりです。



      【書式】

      データ型[] 配列型変数名 = new データ型[] {値1, 値2, 値3……};



      初期化演算子「{ }」は、以下のような場面でしか使えません。



      【例】配列変数の宣言時に、同時に配列オブジェクトを初期化する

      int[] array = {1, 2, 3};



      【例】配列オブジェクトの生成時に初期化する

      int[] array;

      array = new int[]{1, 2, 3};
    • 【 第4刷にて修正 】
  • 52ページ 解答4
    • [誤]第1版第4刷において、52ページの先頭3行が抜け落ちてしまっておりました(本来は51ページの末尾に入るべきでした)。以下がその内容です。
    • [正]4. B



      同名のstatic変数を同時にインポートした場合、名前解決できずにコンパイルエラーになります。しかし、staticインポートの指定にワイルドカード「*」
    • 【 第5刷にて修正 】
  • 58ページ 解答13の2行目
    • [誤]cloneメソッドは、ディープコピーをするためのメソッドです。
    • [正]上記の内容を削除。
    • 【 第2刷にて修正 】
  • 58ページ 解説13、下から3行目以降
    • [誤](58ページの下から3行目以降と次ページの解説文及び図を、下記のとおり差し替えいたします)

    • [正]設問のコードのように、配列のcloneメソッドを呼び出すと、新しい配列インスタンスへの参照が戻されます。配列のcloneメソッドは、Objectクラスに定義されたものと同じ動作をするため、シャローコピーとして動作します。そのため、変数arrayとarray2は異なる参照を持っているものの、参照先にある配列の要素は同じStringオブジェクトを参照していることになります。



      <下記の図に差し替え>



      5行目でarray2で参照できる配列インスタンスの2つ目の要素に新しい参照を代入しています。これはarray2が参照している配列が変わっただけで、arrayの参照先を変えたわけではありません。よって、選択肢Aが正解で、選択肢Bは誤りとなります。
    • 【 第6刷にて修正 】
  • 73ページ 解答32の8行目
    • [誤]クラスのロード時に
    • [正]クラスの初回使用時に
    • 【 第3刷にて修正 】
  • 99ページ 問題25、選択肢A~E
    • [誤]A. java Main.java

      B. java -da Main.java

      C. java -ea Main.java

      D. java -dsa Main.java

      E. java -esa Main.java
    • [正]A. java Main

      B. java -da Main

      C. java -ea Main

      D. java -dsa Main

      E. java -esa Main
    • 備考:

      実行にあたって.javaの拡張子は不要でした。

    • 【 第2刷にて修正 】
  • 106ページ 問4の解説文
    • [誤]swicth文を使った分岐処理に関する問題です。

      設問のコードのように、case式にラッパー型の変数を記述すると、コンパイラは条件式に記述したInterger型との互換性を判断します。

      たとえば、8行目の変数bはByte型ですが、条件式に記述されているInterger型とは互換性がありません。同様に11行目の変数sもShort型なので互換性はありません。以上のことからコンパイルエラーが発生します。よって、選択肢Dが正解となります。
    • [正]swicth文を使った分岐処理に関する問題です。

      case式に記述できるのは、byteやshort、char、intの4種類のリテラルと列挙定数、および定数を返す式だけです。よって、選択肢Dが正解となります。
    • 【 第4刷にて修正 】
  • 159ページ 本文、下から2行目
    • [誤]DecoratedとなるFileReaerや
    • [正]DecoratedとなるFileReaderや
    • 備考:

      (誤)FileReaer

      (正)FileReader

    • 【 第2刷にて修正 】
  • 165ページ 本文、下から5行目
    • [誤]java.io.ObjectOutputStreamクラスを使用し、
    • [正]java.io.ObjectInputStreamクラスを使用し、
    • 備考:

      (誤)java.io.ObjectOutputStream

      (正)java.io.ObjectInputStream

    • 【 第2刷にて修正 】
  • 167ページ 解答27の12行目
    • [誤]~haxNextXxxメソッドを使用すれば、~
    • [正]~hasNextXxxメソッドを使用すれば、~
    • 備考:

      (誤)hax

      (正)has

    • 【 第5刷にて修正 】
  • 174ページ 解答35の下から2行目
    • [誤]したがって、Math.Eのフォーマット結果は「true」となります。
    • [正]また、boolean型もしくはBooleanオブジェクト以外の値を渡した場合にはすべて「true」となります。したがって、Math.Eのフォーマット結果は「true」となります。
    • 備考:

      「したがって」の前の文章に抜けがありました。

    • 【 第2刷にて修正 】
  • 174ページ 問35の解答、解説の3行目
    • [誤]自然対数(2.718281828459045)を表します。
    • [正]自然対数の底(2.718281828459045)を表します。
    • 【 第4刷にて修正 】
  • 178ページ 問題5のソースコード、5行目と8行目
    • [誤]System.out.println(Thread.currentThread().getID());
    • [正]System.out.println(Thread.currentThread().getId());
    • 【 第6刷にて修正 】
  • 182ページ 問題10のコード、3行目
    • [誤]{
    • [正]static {
    • 【 第6刷にて修正 】
  • 190ページ 問18の選択肢
    • [誤]A.「interrupt!」が表示される

      B.「not interrupt!」が表示される

      C.何も表示されない

      D.例外がスローされる
    • [正]A.「interrupt!」が表示される

      B.「not interrupt!」が表示される

      C.何も表示されない

      D.例外がスローされる

      E.選択肢AまたはBの両方が発生する可能性がある
    • 【 第4刷にて修正 】
  • 192ページ 問題20の問題文
    • [誤]以下のコードをコンパイル、実行したときの結果として正しいものを選びなさい。(1つ選択)
    • [正]以下のコードをコンパイル、実行したときの結果として誤っているものを選びなさい。(1つ選択)
    • 備考:

      問題の意味が逆になっていました。

    • 【 第3刷にて修正 】
  • 193ページ 問題21のソースコード
    • [誤](6行目のコードを削除)
    • [正]
    • 【 第4刷にて修正 】
  • 207ページ 解答8の2つ目の箇条書き
    • [誤]public static void sleep(long mills, int nanos)

      tthrows InterruptedException
    • [正]public static void sleep(long mills, int nanos)

      throws InterruptedException
    • 備考:

      (誤)tthrows

      (正)throws

    • 【 第5刷にて修正 】
  • 212ページ 解答18の正解
    • [誤]A
    • [正]E
    • 【 第4刷にて修正 】
  • 213ページ 2行目以降
    • [誤](以下に差し替え)
    • [正]設問のコードは、runメソッドもcancelメソッドもsynchronizedで修飾され、呼び出したスレッドによってロックが取得されます。runメソッドを実行することでロックを取得するのは、startメソッドによって生成された新しいスレッドです。一度取得されたロックは、ロックを保持するオブジェクトの処理が終了しない限り、解除されません。

      設問のコードでは、次の2つのスレッドが存在します。



      ①mainメソッドを実行しているスレッド(cancelメソッドを呼び出す)

      ②startメソッドによって生成された新しいスレッド(runメソッドを実行)



      どちらのスレッドが先に実行されるかは、スケジューラによって変わります。



      もし、①が先に実行された場合、cancelメソッド内でスレッドの割り込みが発生します。割り込み処理が実行されれば、InterruptedExceptionがスローされるため、「interrupt!」と表示されます。



      一方、②が先に実行された場合、runメソッド内のsleepによって処理が待機します。このrunメソッドはsynchronizedであるため、sleepの間にcancelメソッドが呼び出されることはありません。cancelメソッドが呼び出されるのは、runメソッドが終了しロックが解放されてからです。よって、「not interrupt!」と表示されます。



      以上のことから、選択肢Eが正解です。

    • 【 第4刷にて修正 】
  • 214ページ 解答20の正解
    • [誤]D
    • [正]C
    • 【 第3刷にて修正 】
  • 214ページ 解答20の6行目以降
    • [誤]解答20の6行目以降の解説に誤りがありました。
    • [正]解答20の6行目以降を以下に差し替えてください。
    • 備考:

       複数のスレッドが動作する場合、スケジューラはできるだけ単一のスレッドを処理しようとする傾向があります。多くの場合、Aクラスの処理が終わってからBクラスの処理を実行するため、9行目のwaitを解放するためのnotifyAllが一度も呼ばれない状況が発生します。そのため、プログラムは待機状態のまま終了できなくなります。よって、選択肢Dは正しい説明です。

      AクラスのsetNumメソッドは、その処理が終了するとSampleオブジェクトのロックをいったん解除します。前述のように、単一のスレッドが優先されて実行される場合であれば、再度setNumメソッドを呼び出すことでロックを取得します。しかし、何らかの理由で、再度setNumメソッドが呼び出される前にBクラスのスレッドが実行された場合、コンソールには0が表示されます。

      SampleのgetNumメソッドはwaitを呼び出し、それ以上処理が進まないようにしているため、一度だけコンソールに表示されたあとは、Bクラスのスレッドは待機します。その後、AクラスのsetNumメソッドが呼び出されると、notifyAllメソッドが呼ばれるため、先ほど待機していたBクラスのスレッドが再び動作可能になります。そのため、「0」「1」「2」「3」「4」と表示される可能性はあります。また、タイミングによって、選択肢Bのように1回だけ表示される可能性もあります。

      しかし、選択肢Cのように何も表示されないまま、正常に終了することはありません。片方のスレッドが優先された場合にはBクラスのスレッドが復帰できず、交互に動作した場合にはコンソールに0から4までの値が表示されて正常に終了するからです。誤りを指摘する問題なので、選択肢Cが正解です。

    • 【 第3刷にて修正 】
  • 215ページ 解説6~7行目
    • [誤](17行目)
    • [正](16行目)
    • 【 第4刷にて修正 】
  • 231ページ 問題15の選択肢A、B
    • [誤]A.「hello」が表示される

      B.「bye」が表示される
    • [正]A.「A」が表示される

      B.「B」が表示される
    • 【 第3刷にて修正 】
  • 232ページ 問題16の選択肢A、B
    • [誤]A.「A」が表示される

      B.「B」が表示される
    • [正]A.「hello」が表示される

      B.「bye」が表示される
    • 【 第3刷にて修正 】
  • 242ページ 解答3の解説、2行目以降
    • [誤]解説文を以下に差し替えてください。
    • [正]オーバーロード時にも、暗黙的な型変換は実行されます。ただし、これは型を広くする場合に限ります。狭くする基本データ型の型変換は実行されません。また、基本データ型の変換とAutoboxingによる変換であれば、基本データ型の変換が優先されます。以上のことから、選択肢Aが正解で、選択肢Bは誤りです。
    • 【 第4刷にて修正 】
  • 252ページ 解答22、Bの説明の4行目
    • [誤]設問のコードでは、BクラスはCクラスを継承しています。
    • [正]設問のコードでは、CクラスはBクラスを継承しています。
    • 【 第2刷にて修正 】
  • 258ページ 問1の【選択肢】の1行目
    • [誤]FIFO(First In First Out)で要素が順序づけられる
    • [正]要素は特定の処理に依存して順序付けられる
    • 【 第4刷にて修正 】
  • 265ページ 問題13の選択肢D
    • [誤]for(Iterator<String> it = list.iterator(); it.hasNext();) {
    • [正]for(Iterator<String> it : list) {
    • 【 第4刷にて修正 】
  • 265ページ 問題13の選択肢F
    • [誤]str = str + it.next();
    • [正]str = str + it;
    • 【 第4刷にて修正 】
  • 270ページ 問題21のソースコード、8行目
    • [誤]if(name.equals(((Item)obj).name) && size == (Item)obj).size) {
    • [正]if(name.equals(((Item)obj).name) && size == ((Item)obj).size) {
    • 【 第6刷にて修正 】
  • 275ページ 解答1の表「Queue」の「特徴」欄
    • [誤]FIFO(First In First Out)で要素が順序づけられる
    • [正]要素は特定の処理に依存して順序付けられる
    • 【 第4刷にて修正 】
  • 281ページ 解答8の解説
    • [誤]このクラス名の右側に「< >」で囲まれて記述されている「E」は型変数(Type Variable)といい、このような型変数が記述されたクラスもしくはインタフェースをパラメータ化された型(Parameterized Type)といいます。また、パラメータ化されたクラスをジェネリッククラス、パラメータ化されたインタフェースをジェネリックインタフェースと呼ぶこともあります。

      パラメータ化されたジェネリッククラスを利用する場合は、…
    • [正]このクラス名の右側に「< >」で囲まれて記述されている「E」は型変数(Type Variable)といい、このような型変数が記述されたクラス、インタフェースをジェネリッククラス、ジェネリックインタフェースと呼びます。

      ジェネリッククラスを利用する場合は、…
    • 【 第4刷にて修正 】
  • 289ページ 解答15の図「Comparatorインタフェースを用いたソート条件の実装」
    • [誤]<<interface>>

      Comparable
    • [正]<<interface>>

      Comparator
    • 備考:

      (誤)Comparable

      (正)Comparator

    • 【 第2刷にて修正 】
  • 302ページ 問題7の選択肢G
    • [誤]java -classpath /lib/audio.jar Playerを実行する
    • [正]java -classpath .:/lib/audio.jar Playerを実行する
    • 【 第4刷にて修正 】
  • 303ページ 問題8の【ディレクトリ階層】の図中
    • [誤]project
    • [正]c:\project
    • 【 第6刷にて修正 】
  • 303ページ 問題8の選択肢E
    • [誤]java -cp project music.jazz.bebop.Plyaerで実行可能である
    • [正]java -cp c:\project music.jazz.bebop.Plyaerで実行可能である
    • 【 第6刷にて修正 】
  • 306ページ 問題15のコード、1行目
    • [誤]class Garbage {}
    • [正]class Garbage {
    • 備考:

       上記の訂正に伴い、307ページに続く問15のコードの最後に14行目として、

      }

      を追加する。

       

    • 【 第6刷にて修正 】
  • 307ページ 問題15、コード11行目
    • [誤]setObj(null);
    • [正]g.setObj(null);
    • 【 第3刷にて修正 】
  • 307ページ 問16の問題文
    • [誤]以下のコードにおいて10行目に到達した時点でガーベージコレクションの対象となるオブジェクトの数として正しいものを選びなさい。(1つ選択)
    • [正]以下のコードにおいて10行目の実行が完了した時点でガーベージコレクションの対象となったオブジェクトの数として正しいものを選びなさい。(1つ選択)
    • 【 第4刷にて修正 】
  • 312ページ 解答2の正解
    • [誤]正解:選択肢C
    • [正]正解:選択肢A
    • 備考:

      解答2の解説文を以下のように訂正いたします。

       

      「javacコマンドに関する問題です。javacコマンドの-dオプションでクラスファイルの出力先ディレクトリを設定する際には、そのディレクトリが作成済みである必要があります。-dオプションで指定したディレクトリが存在しない場合にはコンパイルエラーになります。したがって正解は選択肢Aです。」

       

      詳しくは以下のWebページを参照してください。
      http://java.sun.com/javase/ja/6/docs/ja/technotes/tools/windows/javac.html#options

    • 【 第2刷にて修正 】
  • 328ページ 問題7のソースコード、1行目
    • [誤]enum Spotlight {
    • [正]enum Stoplight {
    • 備考:

      (誤)Spotlight

      (正)Stoplight

    • 【 第2刷にて修正 】
  • 348ページ 問41のコード、9行目
    • [誤]abstract class F implements X { int doIt() {} }

    • [正]abstract class F implements X { int doIt() { return 1; } }
    • 備考:

      クラスFのdoItメソッドはint値を返す必要がありますが、それが抜けていました。

    • 【 第5刷にて修正 】
  • 359ページ 問題58の選択肢G
    • [誤]java -classpath /lib/audio.jar Playerを実行する
    • [正]java -classpath .:/lib/audio.jar Playerを実行する
    • 【 第4刷にて修正 】
  • 368ページ 解答20、下から2行目
    • [誤]ObjectStreamWriterクラスのコンストラクタは…
    • [正]OutputStreamWriterクラスのコンストラクタは…
    • 備考:

      (誤)ObjectStreamWriter

      (正)OutputStreamWriter

    • 【 第3刷にて修正 】
  • 375ページ 問36の正解
    • [誤]C
    • [正]B
    • 【 第3刷にて修正 】
  • 376ページ 解答41の4行
    • [誤]……を実装していないクラスAとC、Fはコンパイルエラーになります。
    • [正]……を実装していないクラスAとCはコンパイルエラーになります。
    • 【 第6刷にて修正 】
  • 376ページ P376の最終行~P377の1行目
    • [誤]実装クラスはアクセス制限を厳しくすることはできないため、クラスBとEもコンパイルエラーとなります。
    • [正]実装クラスはアクセス制限を厳しくすることはできないため、クラスB、E、Fもコンパイルエラーとなります。
    • 【 第6刷にて修正 】
  • 377ページ 本文、下から3行目
    • [誤]サブクラス型からスーパークラス型に明示的にキャストをしているので、問題なく型変換されます。
    • [正]スーパークラス型からサブクラス型に明示的にキャストをしているので、問題なく型変換されます。
    • 備考:

      スーパークラスとサブクラスの関係が逆になっていました。

    • 【 第4刷にて修正 】

お問い合わせ

書籍の内容に関するお問い合わせはこちら。お答えできるのは本書に記載の内容に関することに限ります。

お問い合わせフォーム