《写给大忙人看的Java核心技术》(2016年1月第1版)一书中,有一些来自英文原版的错误,勘误表必不可少。
Append: 因为此书翻译错误极多,不推荐该中文版。
网上流传的一份中文勘误表错误百出(主要由于中文版的笔误导致),而英文版勘误表因为版本更新已经不具备参考意义。
所以找到了英文旧版勘误表的备份页面,译回中文:
Page 1
5个整型、2个浮点型和一个布尔型
改为:
4个整型、2个浮点型、字符型 char 和布尔型 boolean
Page 17
char next = (char)(‘J’ + 1); // 将75转换为’K’
改为:
int n=1;
char next = (char)(‘J’ + 1); // 将75转换为’K’
Page 18
>>以0替换前面的位,>>>将符号位拓展为最前面的位。
改为:
>>将符号位拓展为最前面的位,>>>以0替换前面的位。
Page 34
done = false;
改为:
done = true;
Page 34
if (n < 0) continue;
改为:
if (input < 0) continue;
Page 45
{3, 10, 11, 8}
改为:
{5, 10, 11, 8}
Page 50
写个程序,读取0~65535之间的两个数,在short变量中存储,并计算它们的无符号之和、之差、之积、之商和余数,不要将它们转换为int类型。
改为:
写个程序,读取0~4294967295之间的两个数,在int变量中存储,并计算和显示它们的无符号之和、之差、之积、之商和余数,不要将它们转换为long类型。
Page 51
3 10 11 8
改为:
5 10 11 8
Page 77
作用域(三处)
改为:
访问权限(三处)
Page 82
private ArrayList<Member> members;
改为
private ArrayList<Member> members = new ArrayList<>();
Page 83
myFace.enroll(“fred”)
改为:
myFace.enroll(”Fred”)
Page 111
int difference = first.length() < second.length();
把 < 改为 -
Page 111
Runnable task = () -> { for (int i = 0; i < 1000; i++) doWork(); }
最后加一个分号
Page 120
public class Application()
改为
public class Application
Page 124
return (x, y) -> comp.compare(x, y);
改为
return (x, y) -> comp.compare(y, x);
Page 126
最后一个 return 的 } 后面缺一个分号
Page 141
public class ConcurrentWorker extends Greeter
改为:
public class ConcurrentWorker extends Worker
Page 142
对象为null时也安全的Object.equals(obj, other)
改为
对象为null时也安全的Objects.equals(obj, other)
Page 155
public Modifier()
去掉 public
Page 167
obj.getDeclaredField(“salary”)
改为
obj.getClass().getDeclaredField(“salary”)
Page 189
ex.printStackTrace(out);
改为
ex.printStackTrace(new PrintStream(out));
Page 192
Logger.global
改为
Logger.getGlobal()
Page 209
printAll(employees, e -> e.toString().length() % 2 == 0);
改为
Predicate