comparing two objects by overriding equals and hashCode

I have one class BillingAddress and it has overriden equals method to compare two bojects of it.

But when I pass null to BillingAddress obj2 = new BillingAddress(null, "Kumar"); it throws NULL POINTER EXCEPTION. Apparently, first names are different;one is null
another one has value john; Why does it throw exception and how do i fine tune it? i cant check for null pointer exception ,but it not right way of comparing two values.i should expect null also in one of the elements at run time. It should not throw null pointer exception.

Your class is inappropriately named; it has nothing to do with bills, nor addresses. It is a Name class.
Are you allowing null values for first name? I don't think you ought to. But if you do, you will have to allow for them in the equals() method. Note you have a mistake about the boolean value in the equals method, too. You should be comparing the two values with the == operator first. Also use the override annotation. Also check whether obj is null. Note you have to do these checks in the correct order.I write about equals methods often enough; there are three useful links in this post.