Мне интересно, гарантируется ли, что в Java-программе логическое выражение справа от конъюнкции (exp2 выше) НЕ будет оцениваться, пока выражение слева (exp1) будет оценено как false.Мне интересно, потому что у меня есть выражение, подобное следующему:
if (var != null && var.somePredicate())
// do something
Если Java не гарантирует прекращение оценки (var != null && var.somePredicate())
после того, как видит, что var
равно нулю, то оно может попытаться оценить1006 *, которая выдаст исключение NullPointerException.
Итак, мой вопрос: гарантирует ли Java определенное поведение, когда дело доходит до этого?Или было бы безопаснее написать
if (var != null)
{
if (var.somePredicate())
// do something
}