Какое из них было бы правильным?
if(dialog != null && dialog.isShowing){}
if(dialog.isShowing && dialog != null){}
if(dialog != null){
if(dialog.isShowing){}
}
Какое из них было бы правильным?
if(dialog != null && dialog.isShowing){}
if(dialog.isShowing && dialog != null){}
if(dialog != null){
if(dialog.isShowing){}
}
Первая и третья из них подходят для использования, потому что они не будут обрабатывать нулевую проверку. Второй может привести к NullPointerException
, поскольку он ссылается на dialog
, прежде чем вы проверите, имеет ли он значение null.
& & оператор в Java перестанет оценивать (слева направо), как только он встретит ложь. Поэтому в
if(dialog != null && dialog.isShowing){}
dialog.isShowing() не будет вызываться, если диалог является нулевым и, следовательно, "безопасным" для использования.
Это:
if(dialog != null){
if(dialog.isShowing){}
}
также будет работать, но, как правило, вложенные if-утверждения, подобные этому, устраняются, поскольку он уменьшает читаемость.
Несмотря на то, что на все ответили ради полноты: То, как Java оценивает условные предложения, называется Оценка коротких замыканий. Это означает, что после утверждения условия условия дальнейшие предложения не будут оцениваться.
Изменить: мое утверждение не совсем верно. Java использует оценку короткого замыкания при использовании || и && (который является стандартом, который использует каждый программист, таким образом, мое выражение в первую очередь), но вы можете заставить Java оценивать все утверждения с помощью и и |
Это ярлык логики. Когда первое выражение ложно, Java не проверяет второе выражение, потому что целое выражение является ложной.
Оператор &&
называется оператором короткого замыкания. Это означает, что когда результат известен. т.е. false && x
всегда false
, он не оценивает остальные выражения.
В этом случае используется короткое замыкание ||
, операция OR, например:
if(text == null || text.isEmpty())
Вы можете использовать try и catch, если хотите использовать второй, в противном случае первый и третий будут правильными.