False boolean = True? - PullRequest
       11

False boolean = True?

5 голосов
/ 25 октября 2011

Я нашел этот код в книге и выполнил его в Netbeans:

boolean b = false;
if(b = true) {
    System.out.println("true");
} else {
    System.out.println("false");
}

Я просто не понимаю, почему вывод этого кода верен, Может кто-нибудь просветить меня, пожалуйста, Спасибо.

Ответы [ 7 ]

13 голосов
/ 25 октября 2011

Недостает двойных равных. Таким образом, он выполняет присваивание вместо сравнения на равенство (и помните, возвращаемое значение присваивания является новым значением). В большинстве случаев тот факт, что большинство типов не являются логическими, означает, что результат не является логическим, и поэтому он становится недопустимым для оператора if, что приводит к ошибке компилятора. Однако, поскольку тип здесь уже является логическим, присваивание приводит к логическому, и проверка безопасности завершается неудачно. Таким образом, b = true означает, что b присвоено значение true, и это значение возвращается и проверяется оператором if.

4 голосов
/ 25 октября 2011

Это потому, что условие оператора if не является сравнением. Это задание:

if(b = true)

Который всегда будет возвращать истину. Так что он всегда будет печатать true.

Если вы хотите сделать сравнение, вам нужно использовать ==.

2 голосов
/ 25 октября 2011

В своем утверждении "if" вы присваиваете значение "true" для b.Вы должны проверить значение, используя оператор сравнения "==".

boolean b = false;

if(b == true)
{
   System.out.println("true");
}
else
{
   System.out.println("false");
}
1 голос
/ 25 октября 2011
 if(b = true)

Ну, это правда, потому что = это оператор присваивания, а не оператор равенства ==

0 голосов
/ 25 октября 2011

Представьте, что int x имеет 2 возможных значения: 1 или 0. Если x = 1, то сделайте это.Иначе, (x = 0), тогда сделайте что-нибудь ещеБулев просто говорит, что это либо одно условие, либо не то условие.

0 голосов
/ 25 октября 2011

Это потому, что это задание.Вы не проверяете b, вы просто присваиваете ему значение true.

0 голосов
/ 25 октября 2011

if (b = true) присваивает значение true b, а затем воздействует на это истинное значение. Это опасность C-подобных языков, что если вы пропустите второй =, когда вы хотите сравнить, вы получите вместо этого назначение и неожиданный результат.

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