This document presents 8 Java puzzles to demonstrate common programming pitfalls. The puzzles cover issues like static methods overriding instead of overloading, violating the equals and hashCode contracts for objects, abrupt returns in finally blocks, integer overflows when subtracting large numbers, operator overloading with characters, ambiguous constructor overloading, implicit type promotions between primitives, and comparing values of different types. For each puzzle, it provides the expected output and an explanation of what is happening, along with suggestions for how to fix the problem code. The overall goals are to have fun while learning about quirks in Java programming and how to avoid common mistakes.