翔泳社のオンラインショップ

SUN教科書 Javaプログラマ(SJC-P) 正誤表

(最終更新日:2009-08-05)

お買い上げになった刷数:
訂正箇所 改訂
刷数
内容
P.009
「リスト 1-1」の行26
3刷
System.out.println("I'm Robo " + myName + ".");
System.out.println("I'm Robo" + myName + ".");
Roboの後のスペースを削除します。
P.046
下から1行目
2刷
double型意味する
double型意味する
P.076
下段コード部分※2箇所
2刷
instance of
instanceof
P.111
上から6行目
2刷
非static変数またはメソッド
static変数またはメソッド
P.111
上から10行目
3刷
staticなネストクラスは、staticなメンバやstaticイニシャライザを持つことができない。
トップレベルのstaticなネストクラスは、staticなメンバやstaticイニシャライザを持てるが、ローカルクラスは、staticなメンバやstaticイニシャライザを持てない。
トップレベルのstaticなネストクラスは」の部分以外は2刷で訂正されています。
P.183
コード下説明文4行目
2刷
11~12行目をコメントアウト
10~11行目をコメントアウト
P.186
コード例後の7行目
3刷
アクセス制限を緩めることはできません。
アクセス制限を厳しくすることはできません。
P.189
下から2行目
3刷
オブジェクト
オブジェクト
P.196
最終行
2刷
NativeMethodsLibという
NativeMethodLibという
P.202
2つ目のソースコード 2行目
2刷
finlaize
finalize
P.248
下から3行目
2刷
その結果得られるのは1010111という2進数であり、
その結果得られるのは10101111という2進数であり、
P.279
問題5-8 ソースコード 4行目
2刷
student_id = sid;

studentId = sid;
P.325
「問題6-9」
3刷
14.     while(i) {
15. System.out.print((j++) + " ");
16. { 17. }
14.     while(i) {
15. System.out.print((j++) + " ");
16. }
17. }
P.358
ソースコード4行目
2刷
IOexception
IOException
P.362
1~2行目
3刷
条件がtrueの場合、それ以降の処理はされません
条件がtrueの場合、何も行われません。
P.364
4つ目の項目 上から4行目
2刷
アサー  ション
アサーション
P.374
実行結果 解答例 A
2刷
I was in tryI was in finally
I was in try
I was in finally
P.395
「リスト8-2」の13行目
2刷
System.out.println("The root of the naviagtion subtree " +
System.out.println("The root of the navigation subtree " +
P.431
問題8-11 選択肢コード
2刷
File

wr.write(str);
FileStream

wr.write(0, str, str.length());
FileStreamについては3刷時点で未訂正です。
P.432
問題8-12 選択肢 C
2刷
シリアライズしてはいけないものの1つが・・・
シリアライズできないものの1つが・・・
P.443
1行目
未定
(3つ以上の参照変数が同じ文字列を
(2つ以上の参照変数が同じ文字列を
P.453
表9-4 上から6つ目
2刷
(3,b.length(),"Chieko.")
(3,sb.length(),"Chieko.")
P.464
リスト9-5の出力結果
3刷
1,276,789.34
1,276,789.34
1.276.789,34
Rs.1,276,789.34
$1,276,789.34
¥1.276.789,34 95%
95%
95%
1,276,789.34
1,276,789.34
1,276,789.34
Rs.1,276,789.34
$1,276,789.34
¥1,276,789
95%
95%
95%
P.468
1行目
2刷
[A-Za-Z0-9]
[A-Za-z0-9]
P.470
項目2のメソッド名
2刷
Matcher m = p.matches("thinker@thinkingman.com");
Matcher m = p.matcher("thinker@thinkingman.com");
P.471
コード内の行番号23
3刷
// wwwで始まる無効な電子メールアドレスを探す
// www.で始まる無効な電子メールアドレスを探す
P.478
リスト9-10 出力結果
2刷
!
420.23
4234.23
true
42042042
42,042,042
!
420.23
4234.23
true
42042042
42,042,042
スペース数に誤りがありました。
P.482,483
リスト9-13出力結果
3刷
Parsing round 1:
cheque
from
publisher
um
Advance:2000
dollars
buy diet pepsi
and peanuts
Parsing round 2:
cheque from publisher
2000 dollars
buy diet pepsi
and peanuts
Parsing round 1:
cheque
from
publisher
um
Advance:2000
dollars
buy diet pepsi
and peanuts
Parsing round 2:
cheque from publisher
2000 dollars
buy diet pepsi
and peanuts
P.511
「問題9-15」の説明の1行目
2刷
また、15行目ではラッパーが使われています。
また、17行目ではラッパーが使われています。
P.518
リスト10-1 ObjectTest.java
未定
以下に差し替えます。
public class ObjectTest {
 public static void main(String[] args) {
  ObjectOne obj1 = new ObjectOne(1,2);
  ObjectOne obj2 = new ObjectOne(1,2);
  ObjectTwo obj3 = new ObjectTwo(1,2);
  ObjectTwo obj4 = new ObjectTwo(1,2);
  if (obj1.equals(obj2)) {
   System.out.println("obj1 is equal to obj2");
  }else {
   System.out.println("obj1 is not equal to obj2");
  }

  if(obj3.equals(obj4)){
   System.out.println("obj3 is equal to obj4");
  }else {
   System.out.println("obj3 is not equal to obj4");
  }
 }
}

class ObjectOne {
 private int x;
 private int y;
 ObjectOne(int x, int y) {
  this.x = x;
  this.y = y;
 }
}

class ObjectTwo {
 private int x;
 private int y;
 ObjectTwo(int x, int y) {
  this.x = x;
  this.y = y;
  }
 public boolean equals(Object o) {
  if(( o instanceof ObjectTwo) &&
   (((ObjectTwo)o).x == this.x) &&
   (((ObjectTwo)o).y == this.y)) {
   return true;
  } else {
   return false;
  }
 }
}
P.519
最後の2行
未定
(1刷)
obj1a is not equal to obj1b
obj1a is equal to obj2

(3刷)
obj1a is not equal to obj1b
obj1a is not equal to obj2
obj1 is not equal to obj2
obj3 is equal to obj4
P.520
3~10行目
未定
呼び出したとき(6行目)に実行されるのは、Objectクラスのequals()メソッドとなります。そしてobj1aとobj1b同じオブジェクトを参照していないので、両者が同一のクラスに属していても、6行目の検証では同一でないと判定されます。・・・(中略)・・・12行目の判定で同一だと評価されるのはこのためです。なお、このObjectTwoで実装したequals()メソッドは、先に説明したequals()の要件を満たしています。
呼び出したとき(7行目)に実行されるのは、Objectクラスのequals()メソッドとなります。obj1とobj2はそれぞれnewによりインスタンス化されたオブジェクトを参照しているため、falseが返ります。・・・(中略)・・・13行目の判定で同一だと評価されるのはこのためです。
P.553
「重要」
3刷
Collections.sort(list)は、ソートするlistの要素がComparableインタフェースを実装していない場合、あるいは何らかの理由で要素間の比較が行えない場合、ClassCastExceptionをスローします。
Collections.sort(list)は、ソートするlistの要素がComparableインタフェースを実装していない場合は、コンパイルエラーとなります。また何らかの理由で要素間の比較が行えない場合、ClassCastExceptionをスローします。
P.564
問題10-2 選択肢 B
2刷
java.util.LinkedLIst

java.util.LinkedList
P.565
問題10-3 選択肢 CとD
2刷
C. 2つの同一でないオブジェクトのハッシュコード値が異なる場合、常にパフォーマンスが向上する 

D. 常に定数値を返すハッシュ関数は、有効なハッシュ関数ではない           
C. 2つの同一でないオブジェクトのハッシュコード値が異なる場合、パフォーマンスが向上する可能性がある

D. 常に定数値を返すハッシュ関数は、有効なハッシュ関数である
P.565
問題10-3 選択肢D
2刷
~有効なハッシュ関数ではない
~有効なハッシュ関数である
P.622
問題11-1 問題文 選択肢ボタン
2刷
問題文: ・・・は次のうちどれですか。

選択肢ボタン 
問題文:・・・は次のどれですか。2つ選択してください。
選択肢ボタン
P.633
問題11-13 選択肢 B
2刷
P.634
問題11-14 選択肢
2刷
yeild
yield
P.635
問題11-15 選択肢A
2刷
aafter_start
after_start
P.638
問題11-12 解答・解説
2刷
正解 B
run()メソッドをsynchronized指定しているため、run()メソッド実行中は他に制御が
移ることなく処理されます。
正解 C
main()メソッドから、Testクラスを2回インスタンス化し、それぞれstart()メソッド
を呼び出しているため、各オブジェクトのsynchronized指定されたrunメソッドが
呼び出されます。したがって、iとjの値は2回ずつ出力されますが、表示順は一意ではありません。
P.645
問題4の13行目
2刷
else if (s == "Xlarge"))
else if (s == "Xlarge")
P.656
問題15 選択肢C
未定
MooYa Gurrr! Moo!
MooYa! Gurrr! Moo!
P.675
「問題34」のコード下の問題文
2刷
16行目に挿入した場合に、ファイル全体を・・・
2行目に挿入した場合に、ファイル全体を・・・
P.708
問題70(問題文コード)
3刷
※下記コードに訂正
import java.io.*;
public class AnimalFarm implements Serializable {
Cow cow ;
Goat goat ;
public AnimalFarm() {
cow = new Cow();
goat = new Goat();
}
}
class Cow implements Serializable {}
class Goat {}

ページ上に戻る

正誤表トップに戻る