和讯博客首发
《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.5,ISBN 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()”