Логическая переменная

#java #if-statement #boolean

#java #if-оператор #логическое значение #логическое

Вопрос:

Я думал, что значение по умолчанию для boolean равно false ? Почему вместо этого он печатает истинное утверждение? Мой результат — до свидания

 
public class Test {

public static void main (String [] args) {

if(false)
    System.out.print("hello");

else System.out.print("goodbye");
}
}
  

Комментарии:

1. Это не имеет ничего общего со значением по умолчанию логической переменной. else Ветвь выполняется, если выражение внутри () вычисляется false , что оно и делает в вашем коде. Что вы ожидали от этого вывода? И можете ли вы объяснить, почему вы ожидали, что это выведет это?

2. Какая vale по умолчанию? Какое true утверждение? Что происходит? Чего вы ожидали?

Ответ №1:

Ваш код не использует значение по умолчанию boolean value . Вы всегда печатаете System.out.print("goodbye"); , потому что этот раздел имеет значение true . Для достижения этой цели используйте следующий код

 
public class Test {
    static boolean defaultValue;
public static void main(String[] args) {
System.out.println("Default value is " defaultValue); if(defaultValue) System.out.println("hello"); else System.out.println("goodbye"); } }

Ответ №2:

То, что sweeper сказал вам в комментарии, верно. Кажется, у вас неправильное впечатление о синтаксисе, я думаю. Возьмите следующий фрагмент кода, который вы привели в качестве примера.

 if (false) {
    System.out.print("hello");
}
  

Код внутри блока if никогда не будет выполняться, потому что выражение false всегда будет принимать логическое значение false . Вы просите Java выполнить следующее: «эй, запустите этот код, если то, что я помещаю в скобки, оценивается как true, но то, что вы помещаете в скобки, всегда будет оцениваться как false. Вот почему java всегда будет запускать код внутри блока else в вашем примере.

Я надеюсь, что это немного прояснит ситуацию.