返回列表 发帖

[程序员基本修养] 《疯狂Java 突破程序员基本功的16课》按页码勘误整理

本帖最后由 jlu_lamp_lamp 于 2011-10-27 11:33 编辑

我根据“《疯狂Java 突破程序员基本功的16课》征集勘误”帖子将所有的勘误按照页码顺序列了出来,同时把重复的删除了。

并且会根据“《疯狂Java 突破程序员基本功的16课》征集勘误”的帖子保持即时更新。


更新依据:“《疯狂Java 突破程序员基本功的16课》征集勘误”帖子中有评分记录的贴子。

当前更新日期至:2011年10月27日11点36分

当前更新位置至:“《疯狂Java 突破程序员基本功的16课》征集勘误”帖子第41楼。



第一课
面试对话:“那你知道基本类型数组和用类型数组之间,在初始化时的内存分配机制有什么区别吗?”
和本课要点中:初始化用类型数组的内存分配
应为:引

P2
第 11行
数组是大多数编程语言都提供一种复合结构,如果程序
应为
数组是大多数编程语言都提供一种复合结构,如果程序
(字要向前移两个位置)

P3

11行:Java语言的数组变量是引用类型的变量,booksnames、seasons3个变量……

seasons应该改成strArr,前面ArrayTest.java代码中没有seasons这个变量,只有strArr变量


P3

15行:对于name数组,为它指定了3个元素,那它的长度就是3

应为:names


P4

倒数第17行:从图1.2可以看出,此时strArrnames和book数组变量实际上引用同一个数组对象

应为:books



P12
图1.10和图1.11中数组的元素编号
pos[0],pos[1],pos[2],pos[4],pos[5]
应该为
pos[0],pos[1],pos[2],pos[3],pos[4]

P14
有四处地方出现数字3的地方,均为4

P15
倒数第一行
而obj[1](也就是objArr数组的第2个元素)
obj[1] 应为 objArr[1]

P17

倒数第三行:当程序执行了⑥行代码int[] iArr = (int[])objArr3[1];/

多了一个 “/


P19

2课中的本课要点中:Final方法注意点
应为小写final



P25
提示部分的第三行
定义变量时指定的初始值和初始化中
初始化中应为初始化块中

P27
倒数第16行
实例变量属于JAVA类本身,只有当程序初始化该java类时才会为该类的类变量分配内存空
应为


P31
图2.8中,第一个灰色块第三行,Creature带有nmae参数的构造器
nmae应为name

P40
倒数第12行 和 倒数第13行
变量i均为变量count


P59
倒数第三行:ArrayListLinked在不同场景下的性能差异;
应为:LinkedList

P61
13行中,只要把Map的所有key集中起来看,那它就是一个Map,这实现了从Map到Set的转换
应为:Set

P68
11行的注意提示栏中:通过eqauls()比较值决定是采用覆盖行为(返回true)
应为:equals()

P75
22行中,①处的代码注释://以定制排序方式创建一个新的TreeMap,根据该TreeSet创建一个TreeSet
应为:TreeMap

P75
28行中,②处的代码注释同上错误

P90
20-22行:Vector的add(int index, E element)方法其实就是insertElementAt(int index, E element)方法。换句话说,add(int index, E element)add(int index, E element)是同一个方法拥有了两个名字。下面是insertElementAt(int index, E element)方法的源代码
应都是:insertElementAt(E obj, int index)

P92
7行处:例如刚刚介绍insertElementAt(int index, E element)方法等
应为:insertElementAt(E obj, int index)

P93
3行注释部分://释放被删除的元素,以GC回收该元素
应为:便

P96
倒数第78行处:调用addFirst(E e)addLast(E e)getFirst(E e)getLast(E e)offer(E e)
应为:getFirst()getLast()

P103
有如下代码
  1. class Node
  2. {
  3. Node next;
  4. String name;
  5. public Node(String name)
  6. {
  7. this.name = name;
  8. }
  9. }
  10. public class NodeTest
  11. {
  12. public static void main(String[] args)
  13. {
  14. Node n1 = new Node("第一个节点");
  15. Node n2 = new Node("第二个节点");
  16. Node n3 = new Node("第三个节点");
  17. n1.next = n2;
  18. n2 = null;
  19. n3 = n2;
  20. }
  21. }
复制代码
n2 = null;  n3 = n2;改为n3 = n2;  n2=null;


P103
倒数第14行
因此可以方便地循环引用的问题
这句话不怎么通顺啊
改成:因此可以方便地解决循环引用的问题。


倒数第11行
采用有向图来管理内存中的对象具有高的精度
高的精度应为高的精度更通顺

倒数第7行
始顶点导航带该对象
导航带应为导航

P104
倒数第5-6行:或者被其他对象的实例变量引用。
多了个“性”字

P105
第4行处:软
应为:“应”字应改成“引”

P108
倒数第一行:切断了str和“Struts2权威指南”字符串对象之间的引用关系
应改成“疯狂Java讲义”,WeakReferenceTest.java源码并没有“Struts2权威指南”,只有“疯狂Java讲义”

P109
第4行:当程序执行4行代码时,通常就看到输出null,这表明该对象已经被清理了。
“回”应改成“会”

P109
第5-6行:上面程序创建“疯狂Java讲义”字符串对象时,不要使用String str = "Struts2权威指南";,这样将看不到运行效果。因为采用String str = "Struts2权威指南"
应都改成“疯狂Java讲义”

P109
倒数第11行://取出弱引用所引用的对象

P110
第4行://取出弱引用所引用的对象

P112
第20行://切断str引用和“Struts2权威指南”字符串之间的引用
应都改成“疯狂Java讲义”
倒数1-2行:这个承诺给很多Java初级程序员一个错觉:Java程序不会有内存泄露。
多了一个“会”字

P113
倒数第8行
//并将最后一个数组赋值为null,让垃圾回收机制回收最后一个元素
数组 应为 数组元素


P116
倒数第1行:会在垃圾回收的过中修改对象
应为“程”

P117
第11行:从根(类似于前面介绍的有向图的起始点)开始访……
“定”应改成“顶”

P118
第18行:每次复制就是将Eden和第1Survior的可达对象复制到第2个Survivor区,然后清空Eden与第1个Survior区。Eden与第1个Survior……
Survior 改成 Survivor

P120
倒数第1行: Eden和Form
Form 改成 From

P120
倒数11行:具体策略为,Yound代采用串行复制的算法
应为:young

P120
倒数第5行到P121第2行的所有Survivor都误写成Survior

P123
倒数第二行:StringBuidlerStringBuffer都代表字符序列可变的字符串
应为:StringBuilder

P126
倒数第15行:当系统内存紧张时,系统会自动释放软引用所用的对象
“应”应改成“引”

P128
的提示框中:除此之外,对于字符串以及ByteShortIntLongCharacterFloatDoubleBoolean
应为:Integer

P143
倒数第15行:则该List对集合元素的类型检查变成了成类型变量上限……
多一个“成”字

P155
第2、5行,P156第3、6、8行中的StaticThreadInit误写成SynchronizedStatic

P156
代码中://定义一个静态field
设置其初始值为www.crazyit.org
应删除 ",设置其初始值为www.crazyit.org

P158
程序清单:codes\05\5.8
\DrawThread.java
应为:DrawTest


P164
第5行:if语句和swich语句
应为switch

P164
6.1.1节第二行后面
表达式的值与前面分支的值都相等
都相等应为不相等或改成都不相等

P169
第8行:至于,则只是一行简单的单行注释
“至于”后面漏了“//www.crazyit.org”

P174
倒数第2—3行:来记录该Cat类一创建了多少个实例
应是:“共”

P175、176、177
“程序清单”都写成了“程序情况

P177
第5行:程序试图访问它的第四个元素(books[3]),当然就会引编译异常了。
176页的SemicolonError2.java是运行时发生ArrayIndexOutOfBoundsException异常,不是编译异常。

P180
第2行:程序清单:codes\06\6.5\FloatTest.java
应是FloatCount2

P181
第21行:程序清单:codes\06\6.6\tForEachErrorTes.java
应为:ForEachErrorTest

P186
第9行:当编译器编辑Java程序时
应为“编译”

P187
1.第二行
//而且obj变量实际上引用的也是Integer对象
而且 应为 但是
2.倒数 第七行 和 第八行 中
true 均为 false


P191
注意提示框的第2行:只产生一个实例的类真不会产生多个实例吗?
改“的”字

P193
第1行://实Cloneabl接口
应改成Cloneable

P194
第6行:复制这个Dog
少一“对”字
倒数第2行:尽量不要初始化块中创建当前类的实例
加一“在”字,尽量不要在初始化……

P195
倒数第6行://调用无参数的构造器初始化intance实例
应改成:instance

P197
第19行:程序清单codes\07\7.4\OverrideTest.java
应改成OverrideTest2

P200
第9行:并使用了private修饰符来修该test()方法
应为“饰”

P202
倒数第10行:程序清单:coeles\07\7.6\Orter.Java
coeles 改成codes
Orter 改成Outer
大写J应改成小写j


P204

5行:程序清单:codes\07\7.6\Outer.java

Outer应改成OuterTest

P208

1行:比较方

应该是“便”

P213到215

finally代码块中的注释://使用finlly来回收资源
应改成:finally

P229
情景对话中倒数第8行:Java的LIst集合本身……
大写I改成小写i


P231

第3至4行
如果使用a0来代表线性表中的第一个元素,其中a1元素可以包含若干个数据项
a1应该为a0
因为这里是进一个数据元素可以是复合结构,并不是指只存单一数据,所以前后应该是同一个元素比较合理



P233
程序代码里的第3行
private int DEFAULT_SIZE = 16
应该加一个final 吧,private final int DEFAULT_SIZE = 16
用于定量大小,而且DEFAULT_SIZE也是用全大写的

P245
第2行:双向表中
应改成“链”


P254

10.1.2节往上数第6行至第7行
应将a1,a2,a3都改为a0,a1,a2
因为图10.1是从a0开始的


P254

10.2.2节的第11,12行
应该把里面的front和rear换一下位置
虽然说相对来说都是一样的,但是结合前文和后文的表述来看
前后对应比较好,即加入元素是在rear端,删除元素是在front端

P255
第9行线性表度-1
应改成:栈

P263
第9行:对于链栈而言,内包含几个元素
应改为“栈”


P272
第7行:该队列允许添加无线个数据元素
改成:“限”

P274


9行://创建新节点新节点的pre指向原rear节点


这句有误



P276
第4行:Concurrent LinkedQueue
中间有空格

P276
下方的图10.18中ConcurrentLinkedQueu少了e,应该是ConcurrentLinkedQueue

P302
倒数第1行:可方便地向下访问访问节点
多了“访问”

P306
倒数第6行:(3)改实
应为“虚”


P319
倒数第4行:所有的点都是空节点
少了“子”字,所有的叶子节点都是空节点

P320
第1行:而且叶子节点都是黑色
多一个“并”字,但改为“并且叶子节点都是黑色”更为通顺
第10行:从根节点到
节点的最短路径长度是2
少了“子”字

P334


9行:但掌握排序算法绝不等于掌握了计算编程算法


少了“机”字,应是计算机编程算法



倒数第8行:计算无法把整个排序过程……


应该是“机”


P368
倒数13行:个BufferdImage的实现类
BufferdImage 改成 BufferedImage

P369
倒数第3行:是否有棋
多了一个“是”

P372
倒数第9行:它负责主要负责两方面的工作
多了“负责”

P393
倒数第17行:
本次循环开始= 0
应为:i

P399
第11行:这样可以异常类名快速确定错误原因
应为:根据
倒数第16行:没有实现Clonable接口时将引发该异常
改成:Cloneable


P400
倒数第4行:
例如,下代码将引发该异常
少了“如”字,应改成:例如,如下代码将引发该异常

P406
倒数13行:举两个简单的例子来说明0
多了一个0

P407
第19行:而不是IDE带着我们编程
“把”字多余

P408
倒数13行:根据底层底层数据库结构生成实体EJB
多了“底层”



[ 本帖最后由 jlu_lamp_lamp 于 2011-2-23 14:42 编辑 ]

真全啊......正在阅读中...谢谢前辈们的悉心指导...

TOP

P25 有一支钢笔的提示块那里第3行"定义变量时候指定的初始值和初始化中指定的初始值"中的"初始化中"少了一个"块"字,应该为"初始化块中指定的初始值".

TOP

回复 3# Rocket 的帖子

请把认为错误的地方发到征集勘误的帖子里去

TOP

P47
“而且本质上final实例变量只能在静态初始化块中被赋初始值”
应为“而且本质上final类变量只能在静态初始化块中被赋初始值”

TOP

很好,谢谢

TOP

返回列表