Java in a Nutshell, 3rd Edition by David Flanagan The following changes were made in the 10/00 reprint: {7} first paragraph: "do any harm: it cannot infect" now reads "do any harm: untrusted code cannot infect ..." (17) footnote: "If you didn't understood all the details..." now reads "If you didn't understand all the details...". (40) bottom: "the same x=x+2" now reads "the same as x=x+2". {55} code: did read: throw new IllegalArgumentException("x must be >= 0")); now reads: throw new IllegalArgumentException("x must be >= 0"); {63} last paragraph: At the start of the paragraph that begins "String literals can be only a single line...": A new opening sentence now reads "String literals cannot contain comments, and may consist of only a single line." (89) 2nd par. from bottom: "compiler determines which constructor you wish based" now reads "compiler determines which constructor you wish to use based". (92) code halfway down: first line of the code did read: "private static finale"... now reads: "private static final"... (92) line -5: "free method" now reads "free function", as the C language doesn't have methods. (93) line -15: "argso[]" now reads "args[]". (109) line 25: There was an unnecessary semi-colon after the definition of the getRadius() method. (114) line -21: double totalDistance; now reads double totalDistance = 0; {116} last line of code: did reads: public interface SuperShape implements Positionable, Transformable {} now reads: public interface SuperShape extends Positionable, Transformable {} {141} line 23: The statement "The valueOf() method can handle arbitrary bases" is incorrect-- it can only handle bases between Character.MIN_RADIX (==2) and Character.MAX_RADIX (==36) inclusive. // The valueOf() method can handle arbitrary bases now reads // The valueOf() method can handle arbitrary bases between 2 and 36 {142} the line: float f = generator.nextFloat(); // 0.0 <= d < 1.0 now reads: float f = generator.nextFloat(); // 0.0 <= f < 1.0 {148} config.getProperties("filterclass", // The property name "com.davidflangan.filters.Default"); // A default now reads config.getProperty("filterclass", // The property name "com.davidflanagan.filters.Default"); // A default Also: String classdir = config.getProperties("classpath"); now reads String classdir = config.getProperty("classpath"); {148} line -7: "import java.net.URLClassLoader;" now reads "import java.net.*;" Also: The line "Another technique:" was added after } catch (Exception e) { /* Handle exceptions */ } {150} 7th line: did read: boolean keepRunning = true; now reads: volatile boolean keepRunning = true; {153} after first line of code, the line: import java.util.*; was inserted. (159) 1st paragraph: In line 5, "Server Socket" now reads "ServerSocket". (180) 3rd paragraph after list, line 2: "proper ty" now reads "property". (193) code comment: The line: * their sum. * @param c1 A Complex object now reads: * their sum. * @param c1 A Complex object (227) 4th paragraph under jdb: "suspendx" now reads "suspend". (240) 3rd para: "Java 1.2x" now reads "Java 1.2". (458) After 4th line of code, a new line was added: java.security.NoSuchProviderException, java.security.SignatureException; (458) code, 7th line: did read: ,java.security.SignatureException { now reads: java.security.NoSuchProviderException, java.security.SignatureException; (519) line -2: "correctly,x" now reads "correctly." {532} In the fourth line down under the Set heading allAll(); now reads addAll(). (562) Figure 26-1: IllegalBlocksSizeException now reads: IllegalBlockSizeException INDEX: An updated index was added.