2010.05.06

【訂正・補足】『Sunテキスト Sun Certified Programmer for Java2 Platform 5.0 Exam[310-055]』

Sunテキスト Sun Certified Programmer for Java 2 Platform 5.0 Exam[310-055]

 下記のような訂正や補足がありました。お詫びするとともに訂正いたします。

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

●問題2-4、p.21、解説、選択肢Cの説明

<誤>
C :byteは、8ビットであり、表せる範囲が-128から127までなので、2003
<正>
C :byteは、8ビットであり、表せる範囲が-128から127までなので、2007

●3-4節、p.36、最初の項「算術演算子」のコード2行目

「int j = 【j】 + 1;」から「int j = 【i】 + 1;」へ。
<誤>
たとえば、
int i = 2147483647;
int j = j + 1;
とあれば、jには正しい値が入らない。
<正>
たとえば、
int i = 2147483647;
int j = i + 1;
とあれば、jには正しい値が入らない。

●問題12-5、p.280、解説下から1-2行目

<誤> C :%nは文字列を表す。Math.PIは文字列に変換されて出力される。
<正> C :%sは文字列を表す。Math.PIは文字列に変換されて出力される。

●13-6節、p.298、表「Localeの主なコンストラクタとメソッド」の2項目め説明

<誤>
(cには、フランス国を表す”FR”などが使える。イギリスは”GB”、アメリカは”US”、ドイツは”DE”、イタリアは”IT”、日本は”JA“。)
<正>
(cには、フランス国を表す”FR”などが使える。イギリスは”GB”、アメリカは”US”、ドイツは”DE”、イタリアは”IT”、日本は”JP“。)

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

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

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

●問題14-4、p.343、解説、選択肢Cの説明

<誤> 問題のコードでaddをputにすると、Eが正解になる。
<正> 問題のコードでaddをputにすると、コンパイルできる。ただし、HashMapは、データの順番を保証しない。そのため、出力は{b=10, a=20}か{a=20, b=10}のどちらかになる(どちらになるか決まっていない)。

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

●2章、p.21、問題2-4のコードの下から3-4行目

<誤> System.out.println(year + “:” + month + “:” + data + “日” + “です”);
<正> System.out.println(year + “:” + month + “:” + data);

●模擬試験、第12問、p.378、最後の選択肢

<誤> E コンパイルでき、実行すると、「1」と出力される。
<正> G コンパイルでき、実行すると、「1」と出力される。

●模擬試験解答解説、第20問、p.438、解説4行目

<誤> booleanのデフォルトと値はfalse
<正> booleanのデフォルト値はfalse

●Index、p.447-453

ローマ数字のページを削除。

■第2刷発行より前に見つかったもの

●3-1節、p.33、「プログラム例」Sample3_1.java

実行結果の出力に合わせて、出力文字列の空白を調整。

<誤> 

class Sample3_1{
   public static void main(String[] args){
      int a = 100; int b = 0123; int c = 0x000000FF;
      long d = 100L; long e = 0123L; long f = 0x000000FF;
      float g = 1e2f; float h = 1e-2f; float i = 200.f;
      double j = 1e2; double k = 1e-2; double l = 200.;
      boolean m = true;
      char n = 's'; String o = "hello";

      System.out.println("a =" + a + "b =" + b + "c =" + c);
      System.out.println("d =" + d + "e =" + e + "f =" + f);
      System.out.println("g =" + g + "h =" + h + "i =" + i);
      System.out.println("j =" + j + "k =" + k + "l =" + l);
      System.out.println("m =" + m + "n =" + n + "o =" + o);

   }
}

<正> 

class Sample3_1{
  public static void main(String[] args){
    int a = 100; int b = 0123; int c = 0x000000FF;
    long d = 100L; long e = 0123L; long f = 0x000000FF;
    float g = 1e2f; float h = 1e-2f; float i = 200.f;
    double j = 1e2; double k = 1e-2; double l = 200.;
    boolean m = true;
    char n = 's'; String o = "hello";

    System.out.println("a = " + a + "   b = " + b + "   c = " + c);
    System.out.println("d = " + d + "   e = " + e + "   f = " + f); 
    System.out.println("g = " + g + " h = " + h + " i = " + i); 
    System.out.println("j = " + j + " k = " + k + " l = " + l); 
    System.out.println("m = " + m + "  n = " + n + "    o = " + o);

  }
}

●3-6節、p.39、booleanと&^|!

<誤> true & false == true
<正> true & false == false

●4-5節、p.65、「コンパイルエラー!」の「エラーメッセージ」

<誤> XのX(int)は()に適用できません。
<正> シンボルを見つけられません。

●5-4節、p.106、下から7行目

間違いではないが誤解の余地があるので。

<誤> 
というクラスのオブジェクトを参照する(指す)変数をyとすると、

Dog b = new Dog();
b.data = 100;
y.method(b);

<正> 
というクラスがあったとする。このとき、

Dog b = new Dog();
b.data = 100;
Y y = new Y();
y.method(b);

●7-4節、p.156、「コンパイルエラー!」タイトルとコード

<誤:タイトル>  class Sample7_4A{
<正> Sample7_4A.java
<誤:コード冒頭に行を追加> 
<正> class Sample7_4A{

●8-1節、p.179、「実行結果」

<誤> java.lang.ArrayIndexOutOfBoundsException
<正> java.lang.ArrayIndexOutOfBoundsException: 3

●8-3節、p.182、「コンパイルエラー!」

<誤> Exception(){} }
<正> Exception{} }

●9-2節、p.200-201、p.200の一番下の行からp.201の一番上の行

<誤> (3)の構文を使うと、デフォルトのパッケージとそのサブパッケージに対するアサーションが有効になる。

<正> (3)の構文を使うと、現在の作業ディレクトリ内の名前のないパッケージ内のアサーションが有効になる。

●9-4節、p.203、下から2行目

<誤> このコードでは、変数seasonがSeason.SPRINGなど4つの値のいずれかを問うということを前提にしている。この前提をチェックするには
<正>  このコードでは、変数seasonがSeason.SPRING(SPRINGは、Seasonというクラスのstaticかつfinalなフィールドとする)など4つの値のいずれかを問うということを前提にしている。この前提をチェックするには

●問題9-1、p.207、問題文と解説

<誤:問題文>
  以下のプログラムをjavac Sample.javaとコンパイルするとどうなりますか。正しい記述を選びなさい。(3つ選択)
<正>
  以下のプログラムをjavac -source 1.3 Sample.javaとコンパイルするとどうなりますか。正しい記述を選びなさい。(3つ選択)
<誤:解説>
  このプログラムでは、assert 文は使用されておらず、int 型の変数の識別子としてassert という名前を使用している。このような、コードをオプションをつけずにソースモード1.3でコンパイルした場合、コンパイルは成功するが、警告が表示される。したがって、A、C、Eが正解。
<正>
  このプログラムでは、assert 文は使用されておらず、int 型の変数の識別子としてassert という名前を使用している。このような、コードをソースモード1.3でコンパイルした場合、コンパイルは成功するが、警告が表示される。したがって、A、C、Eが正解。
◆「-source 1.3」がないとassertを識別子に使えないのでコンパイルエラーになる。

●10-5節、p.224、「synchronizedメソッド」のコードの下

<誤:段落追加>
<正> ここで、incrDataは非static、incrNumはstaticなsynchronizedメソッドである。

●11章、p.241、「本章のポイント」

<誤:文字修正と項目追加>
  ・メソッド内で無名のクラスを定義し使う方法を理解する。
<正>
  ・メソッド内でクラスを定義し使う方法を理解する。
  ・無名クラスを理解する。

●11-3節、p.247、「プログラム例」

<誤> Sample10_3 s = new Sample10_3();
<正> Sample11_3 s = new Sample11_3();

●11-4節、p.249、「プログラム例」

<誤> class sample {
<正> class sample11_4 {

●問題11-10、p.258、「解説」

<誤> A、E:Bに似ているが
<正> A、D:Bに似ているが

●12-1節、p.261、表「Scannerの検索メソッド」

<誤> String findInLine(Pattern p)
  pで指定されるパターン検索し、
<正> String findInLine(Pattern p)
  pで指定されるパターン検索し、
<誤> String findInLine(String s)
  pで指定されるパターンの検索し、
<正> String findInLine(String s)
  sから構築されるパターンを検索し、

●12-3節、p.264、はじめの節の上から(コードも入れて)7行目

<誤> なる。続いて「f = s.findInLine(“X\d+X”);」(紙面上はバックスラッシュ)
<正> なる。上のコードの下で「f = sc.findInLine(“X\d+X”);」(紙面上はバックスラッシュ)

●12-4節、p.267、表

<誤> [フラグ] 左揃えにする
<正> [フラグ]  左揃えにする

●12-6節、p.271、「コンパイルエラー!」

<誤:タイトル追加> 
<正> Sample12_6A.java
<誤:2行に分割>
  import java.io.*;class Sample12_6A{
<正>
  import java.io.*;
  class Sample12_6A{

●12-7節、p.272、本文6行目

<誤> たとえば、DogをSerializableを実装するクラスとすると、
<正> たとえば、DogをSerializableを実装するクラス、dをDogオブジェクトを参照する変数とすると、

●12-7節、p.272、1つめのコードの3行目

<誤> oos.writeObject(dog);
<正> oos.writeObject(d);

●12-7節、p.272、欄外「スローする例外」

<誤> ClassNotFoundation
<正> ClassNotFoundException

●12-7節、p.272、本文3個所(3段落目、上下コード各1行目)

<誤> dog.txt
<正> dog

●12-7節、p.273、「プログラム例」2個所(上から12行目と20行目)&「実行結果」下の本文

<誤:「プログラム例」> (“dog.txt“)
<正> (“dog“)
<誤:本文>
  dog.txtdogの指すDogオブジェクトのデータを書き込み、次にdog.txtからそのデータを読み出している。
<正>
  dogdの指すDogオブジェクトのデータを書き込み、次にdogからそのデータを読み出している。

●12-8節、p.274、「プログラム例」

<誤>
  class Animal implements Serializable {
<正>
  class Animal {
<誤>
  class Dog extends Animal {
<正>
  class Dog extends Animal implements Serializable {

●12-8節、p.274、欄外「宣言の場所での初期化」と本文2段落目

<誤:欄外> Pont
<正> Point
<誤:本文> Serialize
<正> Serializable

●12-8節、p.275、「プログラム例」2個所(上から3行目と12行目)

<誤>
  (“dog.txt“)
<正>
  (“dog“)

●問題13-8、p.309、「解説」

<誤> 「Character c6 = Character.valueOf(‘C’);」
<正> 「Character c = Character.valueOf(‘C’);」

●14-6節、p.331、「プログラム例」

<誤>
  mport java.util.*
<正>
  import java.util.*

●14-8節、p.334、「コンパイルエラー!」

<誤:タイトル追加> 
<正> Sample14_8A.java
<誤:コード1行目を2行に分割> 
import java.util.*;class Sample14_8A {
<正> 
import java.util.*;
class Sample14_8A {

●14-9節、p.337、「コンパイルエラー!」

<誤:タイトル追加> 
<正> Sample14_9A.java
<誤:コード2行目を2行に分割> 
interface IF {} class MyClass implements IF {}
<正> 
interface IF {}
class MyClass implements IF {}
<誤> シンボルを見つけられません。
<正> >がありません。

●問題14-7、p.346

<誤:選択肢> B すべての型の値を格納できる。
<正> B スレッドセーフではない。
<誤:解説> B 基本データ型は格納できない
<正> B Vectorは、スレッドセーフである。

●問題14-13、p.352、解説2行目

<誤> しかし、HasSetに、値を格納する際には、まず、hashCodeでハッシュコードが調べられる。
<正> しかし、HashSetに、値を格納する際には、まず、hashCodeでハッシュコードが調べられる。

●問題14-16、p.355

<誤> (3つ選択)
<正> (4つ選択)

●模擬試験解説、第66問、p.446

<誤> そのため、実行すると、1と3.141592が出力される。
<正> そのため、実行すると、1と3.14159が出力される。

■更新履歴

2010年10月2日:「■第2刷発行より前に見つかったもの」に、p.272「1つめのコードの3行目」を追加しました。
2010年6月2日:p.321を追加しました。
2010年1月20日:p.21とp.298を追加しました。
2009年8月3日:3-4節、p.36を追加しました。
2009年6月11日:問題12-5、p.280を追加しました。
2008年12月9日:問題14-4、p.343を追加しました。
2008年11月11日:2章、p.21を追加しました。