|
|
|
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 ints."
should be
"the Java Virtual Machine creates
1 five-element array of arrays,
5 four-element array of arrays,
20 three-element array of ints."
|
| 344 | "continues as the target" should be "continues at the target" |
| 345 |
In the third paragraph, "ints" should be "ints" 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
|