Always Learning

Advanced Search

Java Puzzlers

Java Puzzlers

Traps, Pitfalls, and Corner Cases

Joshua Bloch, Neal Gafter

Jul 2005, Paperback, 312 pages
ISBN13: 9780321336781
ISBN10: 032133678X
  • Print pagePrint page
  • Email this pageEmail page
  • Write a reviewWrite a review
  • Share

"Every programming language has its quirks. This lively book reveals oddities of the Java programming language through entertaining and thought-provoking programming puzzles."

--Guy Steele, Sun Fellow and coauthor of The Java™ Language Specification

"I laughed, I cried, I threw up (my hands in admiration)."

--Tim Peierls, president, Prior Artisans LLC, and member of the JSR 166 Expert Group

How well do you really know Java? Are you a code sleuth? Have you ever spent days chasing a bug caused by a trap or pitfall in Java or its libraries? Do you like brainteasers? Then this is the book for you!

In the tradition of Effective Java™, Bloch and Gafter dive deep into the subtleties of the Java programming language and its core libraries. Illustrated with visually stunning optical illusions, Java™ Puzzlers features 95 diabolical puzzles that educate and entertain. Anyone with a working knowledge of Java will understand the puzzles, but even the most seasoned veteran will find them challenging.

Most of the puzzles take the form of a short program whose behavior isn't what it seems. Can you figure out what it does? Puzzles are grouped loosely according to the features they use, and detailed solutions follow each puzzle. The solutions go well beyond a simple explanation of the program's behavior--they show you how to avoid the underlying traps and pitfalls for good. A handy catalog of traps and pitfalls at the back of the book provides a concise taxonomy for future reference.

Solve these puzzles and you'll never again fall prey to the counterintuitive or obscure behaviors that can fool even the most experienced programmers.



"Every programming language has its quirks. This lively book reveals oddities of the Java programming language through entertaining and thought-provoking programming puzzles."

--Guy Steele, Sun Fellow and coauthor of The Java™ Language Specification

"I laughed, I cried, I threw up (my hands in admiration)."

--Tim Peierls, president, Prior Artisans LLC, and member of the JSR 166 Expert Group

How well do you really know Java? Are you a code sleuth? Have you ever spent days chasing a bug caused by a trap or pitfall in Java or its libraries? Do you like brainteasers? Then this is the book for you!

In the tradition of Effective Java™, Bloch and Gafter dive deep into the subtleties of the Java programming language and its core libraries. Illustrated with visually stunning optical illusions, Java™ Puzzlers features 95 diabolical puzzles that educate and entertain. Anyone with a working knowledge of Java will understand the puzzles, but even the most seasoned veteran will find them challenging.

Most of the puzzles take the form of a short program whose behavior isn't what it seems. Can you figure out what it does? Puzzles are grouped loosely according to the features they use, and detailed solutions follow each puzzle. The solutions go well beyond a simple explanation of the program's behavior--they show you how to avoid the underlying traps and pitfalls for good. A handy catalog of traps and pitfalls at the back of the book provides a concise taxonomy for future reference.

Solve these puzzles and you'll never again fall prey to the counterintuitive or obscure behaviors that can fool even the most experienced programmers.



Preface xiChapter 1: Introduction 1Chapter 2: Expressive Puzzlers 5

Puzzle 1: Oddity 5

Puzzle 2: Time for a Change 7

Puzzle 3: Long Division 9

Puzzle 4: It's Elementary 11

Puzzle 5: The Joy of Hex 13

Puzzle 6: Multicast 15

Puzzle 7: Swap Meat 17

Puzzle 8: Dos Equis 19

Puzzle 9: Tweedledum 21

Puzzle 10: Tweedledee 23

Chapter 3: Puzzlers with Character 25

Puzzle 11: The Last Laugh 25

Puzzle 12: ABC 27

Puzzle 13: Animal Farm 29

Puzzle 14: Escape Rout 31

Puzzle 15: Hello Whirled 33

Puzzle 16: Line Printer 35

Puzzle 17: Huh? 37

Puzzle 18: String Cheese 39

Puzzle 19: Classy Fire 41

Puzzle 20: What's My Class? 43

Puzzle 21: What's My Class, Take 2 45

Puzzle 22: Dupe of URL 47

Puzzle 23: No Pain, No Gain 49

Chapter 4: Loopy Puzzlers 53

Puzzle 24: A Big Delight in Every Byte 53

Puzzle 25: Inclement Increment 55

Puzzle 26: In the Loop 57

Puzzle 27: Shifty i's 59

Puzzle 28: Looper 61

Puzzle 29: Bride of Looper 63

Puzzle 30: Son of Looper 65

Puzzle 31: Ghost of Looper 67

Puzzle 32: Curse of Looper 69

Puzzle 33: Looper Meets the Wolfman 71

Puzzle 34: Down for the Count 73

Puzzle 35: Minute by Minute 75

Chapter 5: Exceptional Puzzlers 77

Puzzle 36: Indecision 77

Puzzle 37: Exceptionally Arcane 79

Puzzle 38: The Unwelcome Guest 81

Puzzle 39: Hello, Goodbye 83

Puzzle 40: The Reluctant Constructor 85

Puzzle 41: Field and Stream 87

Puzzle 42: Thrown for a Loop 89

Puzzle 43: Exceptionally Unsafe 93

Puzzle 44: Cutting Class 97

Puzzle 45: Exhausting Workout 101

Chapter 6: Classy Puzzlers 105

Puzzle 46: The Case of the Confusing Constructor 105

Puzzle 47: Well, Dog My Cats! 107

Puzzle 48: All I Get Is Static 109

Puzzle 49: Larger Than Life 111

Puzzle 50: Not Your Type 113

Puzzle 51: What's the Point? 115

Puzzle 52: Sum Fun 119

Puzzle 53: Do Your Thing 123

Puzzle 54: Null and Void 125

Puzzle 55: Creationism 127

Chapter 7: Library Puzzlers 131

Puzzle 56: Big Problem 131

Puzzle 57: What's in a Name? 133

Puzzle 58: Making a Hash of It 137

Puzzle 59: What's the Difference? 139

Puzzle 60: One-Liners 141

Puzzle 61: The Dating Game 143

Puzzle 62: The Name Game 145

Puzzle 63: More of the Same 147

Puzzle 64: The Mod Squad 149

Puzzle 65: A Strange Saga of a Suspicious Sort 152

Chapter 8: Classier Puzzlers 157

Puzzle 66: A Private Matter 157

Puzzle 67: All Strung Out 161

Puzzle 68: Shades of Gray 163

Puzzle 69: Fade to Black 165

Puzzle 70: Package Deal 167

Puzzle 71: Import Duty 169

Puzzle 72: Final Jeopardy 171

Puzzle 73: Your Privates Are Showing 173

Puzzle 74: Identity Crisis 175

Puzzle 75: Heads or Tails? 177

Chapter 9: More Library Puzzlers 183

Puzzle 76: Ping Pong 183

Puzzle 77: The Lock Mess Monster 185

Puzzle 78: Reflection Infection 189

Puzzle 79: It's a Dog's Life 193

Puzzle 80: Further Reflection 195

Puzzle 81: Charred Beyond Recognition 197

Puzzle 82: Beer Blast 199

Puzzle 83: Dyslexic Monotheism 201

Puzzle 84: Rudely Interrupted 203

Puzzle 85: Lazy Initialization 205

Chapter 10: Advanced Puzzlers 209

Puzzle 86: Poison-Paren Litter 209

Puzzle 87: Strained Relations 211

Puzzle 88: Raw Deal 213

Puzzle 89: Generic Drugs 217

Puzzle 90: It's Absurd, It's a Pain, It's Superclass! 221

Puzzle 91: Serial Killer 224

Puzzle 92: Twisted Pair 229

Puzzle 93: Class Warfare 231

Puzzle 94: Lost in the Shuffle 233

Puzzle 95: Just Desserts 237

Appendix A Catalog of Traps and Pitfalls 239Appendix B Notes on the Illusions 259References 265Index 271

The author of the classic best practices guide Effective Java now teaches programmers the flipside...how to avoid worst practices!

° Gives an honest assessment of the Java programming language

° Highly enjoyable read that gives any programmer the power to be smarter than the programmer next to them

° Puzzles are challenging and fun, but VERY practical and effective for teaching how to avoid problematic program behavior

Joshua Bloch is a principal engineer at Google and a Jolt Award-winner. He was previously a distinguished engineer at Sun Microsystems and a senior systems designer at Transarc. Josh led the design and implementation of numerous Java platform features, including JDK 5.0 language enhancements and the award-winning Java Collections Framework. He holds a Ph.D. in computer science from Carnegie Mellon University.

Neal Gafter is a software engineer and Java evangelist at Google. He was previously a senior staff engineer at Sun Microsystems, where he led the development of the Java compiler and implemented the Java language features in releases 1.4 through 5.0. Neal was a member of the C++ Standards Committee and led the development of C and C++ compilers at Sun Microsystems, Microtec Research, and Texas Instruments. He holds a Ph.D. in computer science from the University of Rochester.



Your opinions count

Be the first to review this product. Write your review now.