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.
If you read the String API you will see that toString is documented as:
This object (which is already a string!) is itself returned.
So "String".toString() is the same object as "String". Remember that strings like "String" are stored in a string literal pool. Because we are comparing identical string literals the result of the "==" operator is true.
Byte.toString() returns a new String object every time it is called. And the objects returned are not the original string literal "127". So the "==" comparison fails.