Нет, это не вызовет исключение NullPointerException из-за того, как написан оператор if
.У вас есть:
if ( name != null && name.equals("XYZ")) {
//do stuff...
}
Условия в выражении if
оцениваются слева направо.Таким образом, если name
равно нулю, то условие name != null
оценивается как false
, а поскольку false && <anything>
оценивается как false
, условие name.equals("XYZ")
никогда даже не оценивается.
Это поведение - оптимизация во время выполнения , которое позволяет избежать выполнения кода, который не может повлиять на результат оператора if
, и также предотвращает генерацию кода вашего примера из-за генерирования исключения NullPointerException..