IMHO: I follow the principle of "You-Aint-Gonna-Need-It" in keeping things simple. Many developers are worried that one day you may need a getter or setter, when in fact it will never happen.
You should do what you think is the clearest, especially to those who should support your code.
I would suggest that using int if you need a null value or an object is good practice. If you want the value to be truly empty, you should check it.
i.e. or
int age = 10; if (this.age == 20)
OR
Integer age = 10; if (this.age != null && this.age == 20) // age can be null
Note
Integer age; if (this.age == 20)
Peter Lawrey
source share