b1 and b2 are
independent variables that can either be set to refer to an object of type Box, or can be set to null (in which case they don't refer to any object).
When you set b1 = null, all you are doing is saying "b1 no longer refers to that Box object". It doesn't stop b2 referring to the object. You'd have to set b2 = null too, if you want to remove all references to the object.
Basically the object is separate from its references. You can have multiple references to the same object. In your case, both b1 and b2 refer to the same object. You could change one of those variables to point to a different object, or set it to null, and it won't have any effect on the original object or any of its other references.
Hope this hasn't confused you even more! It's quite difficult to explain, because once you understand it, it becomes second-nature.
David Peterson