b1 and b2 references having same object but having different value.I thought it won�t display anything.But it displayed We are Equal.It is quite confusing for me.please someone clarify how it gives that output.
The wrapper classes override the equals() method to do the value comparison and not the object comparison. Here the values of both instances of Boolean are false and hence it will compare true. BTW passing a null in a constructor by default calls the String Constructor if any. Hope that helps!!
All Boolean objects represent either "true" or "false". It just so happens that they decided that "new Boolean(null)" should return a "false" one. All "false" Booleans are equal, as are all "true" ones.