Head First Java, 2nd Edition by Kathy Sierra, Bert Bates The following errata were *corrected* in the 2/07 reprint: This page was updated February 26, 2007 Here's a key to the markup: [page-number]: serious technical mistake {page-number}: minor technical mistake : important language/formatting problem (page-number): language change or minor formatting problem ?page-number?: reader question or request for clarification +n: n'th paragraph from the top of the page -n: n'th paragraph from the bottom of the page ######################################## {xxvii} 10th bullet For long examples or Ready-bake code, you can download the source files from headfirstjava.com -> For long examples or Ready-bake code, you can download the source files from wickedlysmart.com ######################################## (9) +2 Load the Hello class -> Load the MyFirstApp class ######################################## (66) left column under "Tip" on page 55 and 56 -> on page 55 and 57 ######################################## (190) 2nd-to-last box, line 2 public boolean turnOn() -> public boolean turnOff() ######################################## (208) box, under "boolean remove" Removes the object at the index parameter. Returns 'true' if the element was in the last -> Removes one instance of the object specified in the parameter. Returns 'true' if the element was in the list. ######################################## (247) +1 The class below is legal because all four constructors... -> The class below is legal because all five constructors... ######################################## (247) gray box on top right Four different constructors means four different ways to make a new mushroom. -> Five different constructors means five different ways to make a new mushroom. ######################################## {292} 4th line of code under "Converting a string..." boolean b = new Boolean("true") .booleanValue(); -> boolean b = Boolean.parseBoolean("True"); ######################################## {292} 2nd annotation on page You'd think there would be a Boolean.parseBoolean() wouldn't you? But there isn't. Fortunately there's a Boolean constructor that takes (and parses) a String, and then you just get the primitive value by unwrapping it -> The (new to 1.5) parseBoolean() method ignores the cases of the characters in the String argument. ######################################## (367) code at bottom int red = (int) (Math.random() * 255); int green = (int) (Math.random() * 255); int blue = (int) (Math.random() * 255); Color startColor = new Color(red, green, blue); red = (int) (Math.random() * 255); green = (int) (Math.random() * 255); blue = (int) (Math.random() * 255); Color endColor = new Color(red, green, blue); -> int red = (int) (Math.random() * 256); int green = (int) (Math.random() * 256); int blue = (int) (Math.random() * 256); Color startColor = new Color(red, green, blue); red = (int) (Math.random() * 256); green = (int) (Math.random() * 256); blue = (int) (Math.random() * 256); Color endColor = new Color(red, green, blue); ######################################## (370) Sharpen your pencil box Given the pictures on page 351 -> Given the pictures on page 369 ######################################## (371) last line of code // See page 347 for the code -> // See page 365 for the code ######################################## {485} 7th bullet point, 3rd line sock.getInputStream(); -> sock.getInputStream(); sock.getOutputStream(); ######################################## (487) last annotation Remember, the writer is chained to the input stream... -> Remember, the writer is chained to the output stream... ######################################## <591> +3 (last sentence obscured by graphic) Compiling with -d tells the compiler to not just put your classes into correct directory tree, but to the directories if they don't... -> Compiling with -d tells the compiler to not just put your classes into the correct directory tree, but to build the directories if they don't exist. ########################################