Нет синтаксиса, который будет работать в полной мере для проверки трех переменных или утверждений в отношении одного результата. Важно отметить, что и &
в качестве логических операторов не соответствуют всем нормальным применениям слова AND (например, вы не смогли проверить, что boolean1 AND boolean2 AND boolean3 == false
с операторами &&
или &
).
Тем не менее, оценка boolean1 == true
даст тот же результат, что и boolean1
. Так утомительно, если заявление
if(boolean1 == true & boolean2 == true & boolean3 == true){...}
может быть сокращен до
if(boolean1 & boolean2 & boolean3){...}
Это также, вероятно, целесообразно использовать &&
вместо &
, если у вас нет особых причин, чтобы избежать короткого замыкания. См. Differences in boolean operators: & vs && and | vs || для получения дополнительной информации по этой теме.
Кстати: если вы находитесь в булевом контексте, вам никогда не нужно сравнивать его с '== true' и, вероятно, никогда не должно (это просто шум). Поэтому не делайте 'if (a && b && c == true)', просто делайте 'if (a && b && c)'. – yshavit
Также обратите внимание, что сингл & выполняет побитовое, а не логическое. Использование &, когда вы действительно имеете в виду &&, может варьироваться от небольшого удара производительности до катастрофы, в зависимости от экземпляра. –
не рекомендовал бы его, но 'if (Stream.of (boolean1, boolean2, boolean3) .allMatch (Boolean.TRUE :: equals))' имеет семантику, близкую к тому, что вы хотите. – zapl