This week's giveaway is in the EJB and other Java EE Technologies forum. We're giving away four copies of EJB 3 in Action and have Debu Panda, Reza Rahman, Ryan Cuprak, and Michael Remijan on-line! See this thread for details.
why b1.toString() == b2.toString() is evaluating to false.
When a Java expression creates a new String at run time, a new object is created. The = operator checks whether these are the same object. The equals() method would compare the characters in these objects and yield true.
"127" == "127" would be true because the String object "127" is created once at compile time in the String Literal Pool, so you are comparing an object to itself. When you use toString() to create a String, you get a unique object every time.