Null pointers are arguably the most common source of runtime crashes - they are effectively ticking time-bombs. The dreaded null-check in java is considered a code smell by most senior developers, and is usually a sign of bad design.
A far safer approach is to use a Null Object Pattern as zhc mentioned. In this case you create an uninitialized object whenever you declare it rather than let it sit as a null until populated.
An overly simplified example of this would be to always instantiate a String with "". An empty label (in my opinion) is preferable to a crash.