Hi Leclair

I think the explanation is quite simple.
b1.toString() returns a 'new String Object' and not a String literal. So the comparison is between two reference variables of 2 different String Objects havin the same 'Value'
Hence straight == comparison results in false.
Its like doing,
String s1 = new String("127");
String s2 = new String("127");
here s1!=s2,
but
s1.equals(s2) OR s1.compareTo(s2)==0
Bye.
Take Care
Ashish