I get your point about casting.
but in the println statement when u pass the building object it calls the toString method and generates a new string object
why does not it do the same in the below code.
String s = b;// b is a building object
is the tostring method implicitly called only in println where it expects a string?