《Java核心技术 卷I:基础知识(原书第8版)》勘误表

时间:2021-09-20 00:59:16

和讯博客首发

  《Core Java, Volume I: Fundamentals 8th Edition》的作者在前言中提供了一个勘误页的链接,不过只是针对英文版本的。这样我们这些用中文译本的学习者就没办法更好地利用这本书啦……所以我自己试着翻译了一些地方,如有不足,还请各位毫不客气地指出错误并不吝赐教,再次谢过~

  还有,我只是Java的初学者,只买了《卷I基础知识》这一本,所以《卷II》中存在的问题我就无法在这里打出来啦,敬请谅解~

我翻译时使用的的英文原版PDF下载地址:http://download.csdn.net/source/1941527

勘误页链接:http://horstmann.com/corejava/bugs.html#CJ8V1

 

注:我翻译的时候去掉了其中的一些英文重复键入错误、语法错误和排版错误 

 

适用中文译本:Java核心技术,卷I:基础知识(原书第八版)/(美)昊斯特曼(Horstmann, C. S.)著;叶乃文,邝劲筠,杜永萍译.—北京:机械工业出版社,2008.5ISBN 9787111239505

 

9

1-1 1.4版本的年份从2004改为2002

41 3-1

增加一条从float指向double的实心箭头

56

“十进制的分隔符是句号而不是逗号”改为“组分隔符是句号而不是逗号”

PS:修改过后还是很难懂……事实上,德国地区的十进制分隔符和小数点的表示方式和我们是不同的。比如“一万二千三百四十五点六七八”,按照我们的习惯可以写成12,345.678,而德国地区会写成12.345,678

56

  “如果文件不存在,则可以像……”改为“如果文件不存在,则它被创建。你可以像……”

74

“这条语句创建了一个可以存储100个整数的数组。”改为“这条语句创建了一个含有100个整数的数组。当你创建一个数值型数组时,所有的元素的初始值都是0(布尔数组元素初始值为false,对象数组元素初始值为null

77 3-14

12改为13

84

这个地方有些别扭,下面是原文译文对照:

第一处

原文:The expression balances[i] refers to the ith subarray, that is, the ith row of the table. It is itself an array, and balances[i][j] refers to the jth entry of that array.

译文:表达式balances[i]引用第i个子数组,也就是二维表的第i行。它本身也是一个数组,balance[i][j]引用这个数组的第i

建议修改方式:把最后那句话的“第i项”改为“第i个元素”

第二处

原文:Let us make an array in which the entry at row I and column j equals the number of possible outcomes of a “choose j numbers from I numbers” lottery.

译文:在这个示例中,创建一个数组,第i行第j列将存放“从i个数值中抽取j个数值”产生的结果。

个人认为不影响理解,不建议修改。

93 4-4

  将第二个birthday改为deadline

93

  “变量不会自动地初始化为null”改为“局部变量不会自动地初始化为null

135页底部-136页顶部

  “MyProg.java”改为“MyProg”(两处)

161

“有关线程内容请参看卷II”改为“有关进程内容请参看第14章”

165

“有关散列表的内容将在卷II的第2章中讨论”改为“有关散列表的内容将在第13章中讨论”

214

在下面这条语句后加上一个分号(;

    cloned.hireDay = (Date) hireDay.clone()

219

  “javax.awt.Toolkit”改为“java.awt.Toolkit

242 SimpleFrameTest.java

  将11-13行替换为:

             EventQueue.invokeLater(new Runnable()

             {

                public void run()

                {

                   SimpleFrame frame = new SimpleFrame();

                   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

                   frame.setVisible(true);

                }

             });

然后在文件首部加上一行:

    import java.awt.*;

245

    setLoationByPlatform(true);

改为

    setLocationByPlatform(true);

253 NotHelloWorld.java

将第36行和37行改为:

          NotHelloWorldComponent comp = new NotHelloWorldComponent();

          add(comp);

45行中,将“panel”改为“component

将第47行改为:

    class NotHelloWorldComponent extends JComponent

298

repaint();下方添加一个},与if下方的{对齐

309 9-3

WHYIWG”改为“WYSIWYG

332

在“Border etched = BorderFactory.createEtchedBorder()”后添加一个分号(;

340

  “参考卷II的第2章”改为“参考第13章”

454

    appletviewer NotHelloAppletApplication.java

    java NotHelloAppletApplication

改为

    appletviewer AppletApplication.java

    java AppletApplication

484

try()”改为“try

521

  “setColor(Color.yellow)”改为“setBackground(Color.yellow)

523(第12 泛型程序设计 标题页)

    String filename = (String) names.get(0);

改为

    String filename = (String) files.get(0);

544

“可以用任意Object对象调用原始的Pair类的setObject方法”改为“可以用任意Object对象调用原始的Pair类的setFirst方法”

  “用来测试一个pair是否包含了指定的对象”改为“用来测试一个pair是否包含了一个空引用(a null reference)”

545

   

    PairAlg.swapHelper(result);

    改为

    PairAlg.swap(result);

572 SetTest.java

    将第26行改为:

          for (int i = 1; i <= 20 && iter.hasNext(); i++)

584

   

    V get(K key)

    改为

    V get(Object key)

614

“…调用comp.repaint()会发现没有重画画板,这是因为addBall方法完全掌握着控制权”改为“…调用comp.repaint(),那么只有当addBall方法返回之后才会重画画板”

625

    Thread().currentThread().interrupt()”改为“Thread.currentThread().interrupt()