Sponsored Link •
|
Advertisement
|
The following table contains a list of the errata about which I know. Thanks to Marcus Rimmer, who reported a few of these items, and especially to Antoine Trux, who reported probably 80% of them or more. Antoine must have really consumed the book with great intensity to find so many typos and other errors. (He also must have liked it.)
Page | Oops |
---|---|
x | Starting with page 188, the pages shown in the table of contents are wrong |
36 | "the user interface" should be "user interface" |
55 | "So ,in the case of" should be "So in the case of" |
79 | "nondaemon" should be "non-daemon" |
84 | In Figure 5-4, lower "Primitive Types" should be "Reference Types" |
84 | "...false is represented by zero and true by any nonzero integer" is true of most (if not all) JVM implementations, but is not strictly required by the specification |
84 |
"returnValue " should be "returnAddress "
|
85 |
In last paragraph, "returnValue " should be
"returnAddress "
|
85 |
In Table 5-1, "returnValue " should be
"returnAddress "
|
85 | In Table 5-1, exponents need to be superscript. For example, -231 is supposed to be -231. |
88 |
"//java.lang.ClassLoader " should be "// java.lang.ClassLoader "
|
94 |
Semicolon missing from last statement in code fragment,
"public ClassLoader getClassLoader() "
|
105 |
"returnValue " should be "returnAddress "
|
105 |
In Figure 5-8, the first "ar[1][1] " should be
"ar[0][1] ," and the second
"ar[0][0] " should be "ar[1][0] "
|
107 | In Figure 5-9, top of left diagram, "type" (index 0) should be "int" |
109 |
"returnType " should be "returnAddress "
|
110 |
The first "in local variable " should be "in local
variable 0 "
|
110 | At the bottom of Figure 5-10, "operand atack" should be "operand stack" |
111 | "complete abnormally" should be "complete abruptly" |
124 | In line 2 of paragraph 2, "not all architecture's time slice" should be "not all architectures time slice" |
129 | "that supports JDK 1.1" should be "that supports JDK 1.0" |
138 |
In Figure 6-2, "CONSTANT_Class " (middle block)
should be "CONSTANT_Utf8 "
|
140 | In paragraph 3, line 3, "If the method is not abstract" should be "If the method is not abstract and not native" |
142 | In line 8 from bottom, "BaseType" should be in italics |
143 | In line 4, "<cc>>Z" should be "Z" |
144 | In line 7, "ArrayType" should be indented at same level as "ObjectType" |
162 |
In Table 6-31, "classes_info "
should be "inner_classes_info "
|
172 | In legend of Figure 7-1, "class' lifetime" should be "class's lifetime" |
178 |
In last paragraph, "boolean is implemented by an int ,
which gets set to zero (boolean false ) by default" does not
clearly indicate that the specification is mute on exactly how
implementations must represent boolean values internally.
|
178 | In legend of Table 7-1, "Default initial values for the primitive types" should be "Default initial values for the primitive and reference types". (Reference is not a primitive type.) |
182 |
In paragraph 2, line 2,
"If a class declares no class variable, it won't have a
<clinit> method."
should be:
"If a class declares no class variables or static
initializers, it won't have a <clinit> method."
It is allowed for a class to have a static initializer even
if it doesn't have any class variable.
|
184 |
"//here " should be "// here "
|
185 | In paragraph 2, line 4, "invoking a class initialization method" should be "invoking an instance initialization method" |
186 |
In comment in code, "active use of Parent "
should be "active use of NewParent "
|
186 |
In paragraph 1, line 2, "Parent "
should be "NewParent "
|
186 | In paragraph 2, line 5, "the referring classes constant pool" should be "the referring class's constant pool" |
186 |
In bottom code example, "Anger was initialized "
should be "Angry was initialized "
|
187 |
In code fragment 1, line 6, "Invoking main() is an active use of
Example4 " should be "Invoking main() is an active use of
Example3 "
|
187 |
In paragraph 1, "Running the Example4 application" should be
"Running the Example3 application"
|
189 |
"1 arraylength " should be one line lower, because it has
a two-line comment that goes to the next line.
|
189 |
In last code fragment, line 6, "(length > 2) " should be
"(length >= 2) "
|
191 | In paragraph 1, line 5, "instructions at offset 23 and 33" should be "instructions at offset 24 and 33" |
201 | "light gray circles" should be "clear circles," and "dark gray rectangles" should be "gray rectangles" |
211 | "to nonarray class" should be "to a nonarray class" |
213 | "complete abnormally" should be "complete abruptly" |
216 | In paragraph 2, line 11, "so it have would been" should be "so it could have been" |
227 | In paragraph 1, line 12, "that methods that methods" should be "that methods" |
228 |
"java.lang.Object" should be "java.lang.Object "
|
248 |
In code extract 1, the last else statement cannot be reached: the
cases hours < 0 and hours > 24 are trapped by
"else if (hours >= 22 || hours <= 3) "
|
260 | In Figure 8-11, bottom-left box, first row "0" should be "o" (Letter 'o' instead of zero.) |
266 | In paragraph 3, line 4, "native pinter" should be "native pointer" |
272 | "all unreference objects" should be "all unreferenced objects" |
298 |
"1 istore_0 " and a few other instructions
should be one line lower, because they have
multi-line comments that continue onto subsequent lines.
|
317 |
In line 5 of the first paragraph, "one is encountered in the current
int , it is changed to zero" should be
"zero is encountered in the current int , it is changed to one"
(In other words, the "one" and "zero" should be swapped.)
|
320 | "any of the following forms" should be "any of the listed forms" |
333 | In line 7 of the second paragraph, "type, size, and offset" should be "class, name, and type" |
333 |
In Table 15-3, the description of the putstatic opcode
should be "sets static field, indicated by index, to value (taken
from stack)"
|
333 |
In Table 15-3, the description of the getstatic opcode
should be "pushes static field, indicated by index"
|
336 | In legend of Table 15-7, "Getting an array" should be "Getting an array length" |
340 |
"56 if_icmplt 18 " should be one line lower, because it has
a two-line comment that goes to the next line
|
340 | In line 4 from the end, "The components of these five arrays" should be "The components of these twenty arrays" |
341 |
On the top of page 341, the number of elements of the arrays
is incorrectly expressed in terms of "dimensions":
"the Java Virtual Machine creates
1 five-dimensional array of arrays,
5 four-dimensional array of arrays,
20 three-dimensional array of int s."
should be
"the Java Virtual Machine creates
1 five-element array of arrays,
5 four-element array of arrays,
20 three-element array of int s."
|
344 | "continues as the target" should be "continues at the target" |
345 |
In the third paragraph, "ints " should be "int s" in
three places. (In other words, the s should be in normal, not code font.)
|
361 | In line 3 of the first paragraph, "while" should be "for". |
366 |
"1 ifeq 11 " and a few other instructions
should be one line lower, because they have
multi-line comments that continue onto subsequent lines.
|
374 |
In paragraph 3, line 2, "invokevirtual for example methods"
should be "invokevirtual for instance methods"
|
396 | "passes through the door number two" should be "passes through door number two" |
Sponsored Links
|