2010.05.06

【正誤情報】『Sun試験対策 Javaプログラマ教科書 SJC-P6 [CX-310-065]対応』

Sun試験対策 Javaプログラマ教科書 SJC-P6 [CX-310-065]対応

本書の内容に下記のような誤りや補足があります。お詫びの上、訂正いたします。


■資格名、試験配信会社、試験番号の変更について

 本書の刊行後、下記のような資格名、試験配信会社、試験番号などが変更されています。
 試験の内容や問題は変わりませんが、本書の「SJC-P6について」(p.xii~xvii)で説明された受験手続きは変更されていますので、Oracleのサイトをご覧ください。

オラクル認定資格制度



●2010年9月2日、Javaプログラマ(SJC-P6)を含むSun認定資格は、Oracle認定資格制度
のもと再編されています。

旧「Sun認定JavaプログラマSE 6 (SJC-P)」は、新しく「Oracle認定JavaプログラマSE 6」となっています。

Sun認定資格に関する重要なお知らせ

試験の内容や目的について、上記URLの「よく寄せられる質問」にて下記のように説明されています。

今回の統合で試験の内容や目的に変更はありますか?
 今回変更されるのは認定資格の名称のみです。試験の形式や目的はSunの場合と変わりありません。



●2011年6月1日より、Java、Oracle Solaris、MySQL(旧Sun)認定資格の試験配信会社がピアソンVUE社に移行されました。

それに伴って、JavaプログラマSE 6(旧SJC-P6)の試験番号が「CX-310-065」から「1Z0-851」へ変更されています。

Java、Oracle Solaris、MySQL(旧Sun)認定資格の試験配信会社をピアソンVUE社に移行

試験問題について、FAQにて下記のように説明されています。

ピアソンVUE社のシステムでのオラクル試験問題に違いはありますか?
 いいえ。ピアソンVUE社のシステムでは外観が若干異なる場合もありますが、試験問題に変更はありません。
試験配信会社の移行に関するFAQ


■第1刷発行後に見つかったもの

●p.8、1-2節、コンパイルエラー!Sample1_1A.javaの「エラーメッセージ」

<誤> 
‘}’ がありません。

<正> 
構文解析中にファイルの終わりに移りました

●p.10、2-1節、コンパイルエラー!Sample2_1A.javaの「エラーメッセージ」

<誤> 
‘class’ または ‘interface’ がありません。

<正> 
class、interface、または enum がありません。

●p.12、2-2節、「識別子」の2番目の段落冒頭

<誤> 
予約されているキーワードとリテラル、また、リテラルは識別子に

<正> 
予約されているキーワードとリテラルのtrue、false、nullは識別子に

●p.42、3-5節、ページ下方の「ここに注意」

<誤> 
xにnullが格納されていればx instanceof Yは必ずtrue
<正> 
xにnullが格納されていればx instanceof Yは必ずfalse

●p.73、4-7節、「final、static、private」の箇条書き

※箇条書きが、ボールド(太字)ゴシックになっていますが、通常の太さのゴシックに訂正いたします。

<誤> 
・staticメソッド(クラスメソッド)をオーバーライドして、非staticメソッド(インスタンスメソッド)にすることはできない。
<正> 
・staticメソッド(クラスメソッド)をオーバーライドして、非staticメソッド(インスタンスメソッド)にすることはできない。また、その逆もできない。

●p.83、4-12節、「オブジェクト指向プログラミング」の上から5行目(2つ目の段落冒頭)

<誤> 
 インスタンメソッドは、
<正> 
 インスタンメソッド、

●p.113、5-2節、プログラム例Sample5_2.java

実行結果の見映えのため、上から4行目と8行目の出力文字列に空白を挿入。

<誤:4行目> 
    System.out.println(“d1[0] =”+d1[0]+”d1[1]=”+d1[1]);
<正:4行目> 
    System.out.println(“d1[0] = ” + d1[0] + ” d1[1] = ” + d1[1]);

<誤:8行目> 
        System.out.print(“d2[“+i+”][“+j+”]=”+d2[i][j]);
<正:8行目> 
        System.out.print(“d2[“+i+”][“+j+”] = ” + d2[i][j] + ” “);

●p.139、6-1節、コンパイルエラー!Sample6_1B.javaの「エラーメッセージ」

<誤> 
X の meth(short) は (int) に適用できません。

<正> 
meth(short) (X 内) を (int) に適用できません。

●p.140、6-2節、「参照型の拡大変換」の下から3~2行目

<誤> 
そのイン
フェースを実装した~

<正> 
そのイン
フェースを実装した~

●p.161、7-1節、「ここに注意」の2行目:補足のため差替

<誤> 
これは、宣言式が「1つ」しかないからである。

<正> 
2つの変数を宣言していても、宣言式自体は1つだけだからである。

●p.161、7-1節、「goto」の説明文:補足のため差替

<誤> 
Javaでは一部の言語にあるgoto文はない。

<正> 
Javaには一部の言語にあるgoto文はない(2-2節も参照のこと)。

●p.168、7-5節、「switch文」のコード3行目、コードの下から3~4行目

「値2」の後ろはセミコロン「;」ではなくコロン「:」。

<誤> 
  case 値2; ... break; //break;なしでもよい

<正> 
  case 値2: ... break; //break;なしでもよい

<誤> 
 変数はbyte、short、char、int、enum、ラッパークラスの変数でなければならない。

<正> 
 変数はbyte、short、char、int、それらのラッパークラスの変数、enumでなければならない。

●p.200、問題8-6、解説の冒頭:補足のため差替

<誤> 
bはフィールドなのでnullに初期化される。

<正> 
bの型はBoolean、つまりbooleanのラッパークラス(13-4節を参照)の変数である。そして、参照型のフィールドはnullに初期化される(4-4節を参照)

●p.230、10-1節、ページ欄外の上から2番目の!、上から6行目

classとMyThreadの間にスペースを空ける。

<誤> 
「classMyThread

<正> 
「class MyThread

●p.263、11-3節、「初期化」の上から4行目

<誤> 
 フィールドを初期化したい場合は、静的初期化子を使うことができる。
<正> 
 フィールドを初期化したい場合は、初期化子を使うことができる。

●p.274、問題11-10、選択肢

複数選択するので、ラジオボタンではなくチェックボックスが正しいです。

●p.288、12-7節、「ObjectInputStream/ObjectOutputStream」の上側のコードの下、3~4行目

<誤> 
このメソッドの
引数の型は、Serializableである
<正> 
このメソッドの
引数の型はObjectであるが、Serializableを実装していなければならない

●p.293、12-9節、プログラム例Sample12_9.javaと実行結果

<誤:プログラム例2行目> 
class MyConsole
<正:プログラム例2行目> 
class Sample12_9

<誤:実行結果1行目> 
D:jprogs>java Sample12_9
<正:実行結果1行目> 
C:jprogs>java Sample12_9

●p.301、問題12-8、選択肢

1つ選択するので、チェックボックスではなくラジオボタンが正しいです。

●p.311、13-1節、コンパイルエラー!Sample13_1A.javaの「エラーメッセージ」

<誤> 
StringとStringBufferは比較できません。

<正> 
型 java.lang.String と java.lang.StringBuffer は比較できません。

●p.335、問題13-12、選択肢G

<誤> 
G 5

<正> 
G 6

●p.341、14-1節、「図14-1-1のつづき」右上、キューのイラスト部分

キューのイラストが間違っておりましたので、下記のように訂正させていただきます。

<正> 
正しい図

●p.342、14-2節、「Listの主なメソッド」の2項目目と、下から2項目目の説明

<誤> 
boolean add(インデックス, 値)
<正> 
void add(インデックス, 値)

<誤> 
すべて値
<正> 
すべて

●p.347、14-4節、見出し「java.util.Comparable」

<誤:タイトル> 
java.util.Comparable
<正:タイトル> 
java.lang.Comparable
<誤:1行目を削除> 
 Sample14_6.java

●p.349、14-5節、プログラム例の5行目

<誤> 
Iterator i = li.iterator();

<正> 
Iterator<String>i = li.iterator();

●p.349、14-5節、「実行結果」の前に本文追加

<正:本文追加> 
 なお、ジェネリックスを使っているので、反復子の生成は「Iterator<String>i = li.iterator();」とするのが正しいが、ジェネリックスを使わなければ、「Iterator i = li.iterator();」とも書ける。上記のようなプログラムでは、それでもエラーにはならない。

●p.351、14-6節、プログラム例

<誤:タイトル> 
Sample14_5.java
<正:タイトル> 
Sample14_6.java

<誤:1行目を削除> 
 Sample14_6.java

●p.352、14-7節、「NavigableSetのメソッド」の「データの追加・取り出し」の4項目目

<誤> 
higher(E e)
<正> 
higher()

●p.353、14-7節、プログラム例Sample14_7.javaの実行結果

<誤:実行結果1行目> 
D:jprogs>java Sample14_7
<正:実行結果1行目> 
C:jprogs>java Sample14_7

●p.354、14-8節、Pointの2行目

<誤> 
TreeMap NavigableSetを実装するマップ
<正> 
TreeMap NavigableMapを実装するマップ

●p.354、14-8節、2つめの大見出し

<誤> 
NavigableSetのメソッド
<正> 
NavigableMapのメソッド

●p.354、14-8節、「NavigableSetのメソッド」の「データの追加・取り出し」の4項目目

<誤> 
higher(E e)
<正> 
higher()

●p.355、14-8節、プログラム例Sample14_8.javaと実行結果

<誤:プログラム例2行目> 
class MyTreeMap
<正:プログラム例2行目> 
class Sample14_8

<誤:実行結果1行目> 
D:jprogs>java Sample14_8
<正:実行結果1行目> 
C:jprogs>java Sample14_8

●p.358、14-10節、Point

<誤> 
ハッシュ:データ(値)を識別キーに対応させる方法
<正> 
ジェネリッスを使用する形式と使用しない形式を混在させることもできる

●p.359、14-10節、欄外右上「ArrayListはListを実装」の説明文の最終行

<誤> 
覚えておくべきである
<正> 
覚えておくべきである

●p.363、14-12節、プログラム例Sample14_12.javaの実行結果について補足

<補足> 
ObjectのtoStringは「クラス名@ハッシュコード」を戻すが、ハッシュコードは実行する環境によって変わるので、いつでも「9304b1」と出力されるわけではない。

●p.377、問題14-14、解説6行目と7行目の2箇所

アルファベット小文字oから大文字Oへ。

<誤> 
object
<正> 
Object

●p.388、15-1節、3箇所ある「-classpass」

(1)ページ欄外!のタイトルと(2)その下の説明文、(3)本文「クラスパス」の1つ目のコード中

<誤> 
-classpass
<正> 
-classpath

●p.388、15-1節、「クラスパス」の2番目のコード4行目

行の後方にある「/」を削除。

<誤> 

public class Sample15_1 {
  public static void main(String[] args) {
    com.office.Dog d = new com.office.Dog();
    ...           /

<正> 

public class Sample15_1 {
  public static void main(String[] args) {
    com.office.Dog d = new com.office.Dog();
    ...

●p.447、模擬試験、第54問、問題文の1行目

<誤> 
 以下のプログラムは、現在の時刻
<正> 
 以下のプログラムは、現在の日付

●p.451、模擬試験、第58問、選択肢の前の段落冒頭

<誤> 
 でコンパイルしたとします。こにより生成されたSample.classを
<正> 
 でコンパイルしたとします。こにより生成されたSample.classを

●p.455、模擬試験 解答解説、第11問

<誤> 
【!】「 final Integer i2 = 2;」が「final int i2 = 2;」なら、Eが正解。
<正> 
【!】「 final Integer i2 = 2;」が「final int i2 = 2;」なら、Gが正解。


■更新履歴

2011年9月8日:p.447を追加しました。
2011年8月18日:p.301、p.335、p.451、p.455を追加しました。
2011年6月8日:「■資格名、試験配信会社、試験番号の変更について」を追加しました。
2010年8月7日:p.42、p.73、p.83、p.140、p.168、p.230、p.263、p.274、p.288、p.342、p.347、p.349、p.352、p.354、p.358、p.388を追加しました。
2010年7月21日:p.168、p.351、p.354、p.377、p.383を追加しました。
2010年5月20日:p.341、p.354、p.359を追加しました。
2010年5月13日:p.12、p.161、p.200を追加しました。