下記のような訂正や補足がありました。お詫びするとともに訂正いたします。
■第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のつづき」右上、キューのイラスト部分
キューのイラストが間違っておりましたので、下記のように訂正させていただきます。
<正>
■第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.txtにdogの指すDogオブジェクトのデータを書き込み、次にdog.txtからそのデータを読み出している。
<正>
dogにdの指す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を追加しました。