Во-первых, если переменная не
финальная, использовать как
L-value этого типа – присваивать новое значение.
Во-вторых, то же, что со значением
null, но с учетом типа:
- Сравнивать с
null или переменной этого же класса; - Приводить к типу-родителю (upcast) или типу-наследнику (downcast), учитывая границы generic-параметров при наличии;
- Обращаться к членам экземпляра и получать
NullPointerException; - Применять
instanceof и получать false - Использовать как параметр для методов и других совместимых с типом операторов
В-третьих, можно обращаться к статическим членам класса. В вопросе подразумевается именно эта интересная часть. Это безопасно,
NullPointerException не возникнет, но для упрощения отладки и из-за отсутствия переопределения статических членов рекомендуется так не делать. Вместо этого обращайтесь к статике явно через имя класса, либо неявно, добавив для класса
import static.