Ravi,
Each call to the toString() method returns a new distinct String object. Two distinct objects are not "==" to each other.
What Barry meant above is that the "==" checks for reference equality and not for equality of what the Byte objects hold in this case the value 127.
Let's look at the following code diagramatically,
Byte b1 = new Byte("127"); A object is created on the heap with reference A0
System.out.println(b1.toString()); The code above will create a new object on the heap, with reference A2
System.out.println(b1.toString()); The code above will create a new object on the heap, with reference A3
As you can see the references A2 and A3 are not the same, therefore '==' returns false.