Могу ли я присвоить результат теста булевой переменной в Java? - PullRequest
3 голосов
/ 25 мая 2010

Когда я пишу boolean bool = aString.indexOf(subString) != -1 Eclipse не жаловался, значит ли это, что он такой же, как boolean bool = aString.indexOf(subString) != -1 ? true : false?

Ответы [ 3 ]

9 голосов
/ 25 мая 2010

Да. Сравнение дает логическое значение, и оно может быть присвоено переменной, как и любое другое значение.

Вторая форма (с троичным оператором ?:) является избыточной и не должна использоваться.

Стилистически, я обычно заключаю логические выражения в круглые скобки при назначении их значениям, как

boolean bool = (aString.indexOf(subString) != -1);

для того, чтобы провести четкое визуальное различие между двумя операторами, использующими символ =, но это не обязательно.

1 голос
/ 25 мая 2010

Да, конечно. Логическое выражение возвращает логическое значение. Вот почему его можно использовать в if операторах и т. Д., Поскольку они ожидают true или false результатов.

1 голос
/ 25 мая 2010

Да, оба синтаксиса эквивалентны.

Просто используйте скобки, чтобы быть понятными или более читабельными.

boolean bool = (aString.indexOf(subString) != -1);
...