本帖最后由 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语言的数组变量是引用类型的变量,books、names、seasons这3个变量…… seasons应该改成strArr,前面ArrayTest.java代码中没有seasons这个变量,只有strArr变量
P3
第15行:对于name数组,为它指定了3个元素,那它的长度就是3 应为:names
P4 倒数第17行:从图1.2可以看出,此时strArr、names和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
倒数第三行:ArrayList和Linked在不同场景下的性能差异;
应为: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
倒数第7—8行处:调用addFirst(E e)、addLast(E e)、getFirst(E e)、getLast(E e)、offer(E e)
应为:getFirst()、getLast()
P103
有如下代码- class Node
- {
- Node next;
- String name;
- public Node(String name)
- {
- this.name = name;
- }
- }
- public class NodeTest
- {
- public static void main(String[] args)
- {
- Node n1 = new Node("第一个节点");
- Node n2 = new Node("第二个节点");
- Node n3 = new Node("第三个节点");
- n1.next = n2;
- n2 = null;
- n3 = n2;
- }
- }
复制代码 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和第1个Survior的可达对象复制到第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
倒数第二行:StringBuidler和StringBuffer都代表字符序列可变的字符串
应为:StringBuilder
P126
倒数第15行:当系统内存紧张时,系统会自动释放软引用所应用的对象
“应”应改成“引”
P128
的提示框中:除此之外,对于字符串以及Byte、Short、Int、Long、Character、Float、Double和Boolean
应为: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行:
本次循环开始I= 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 编辑 ] |