Почему Boolean всегда дает null

Вопрос:Я написал следующий код Boolean isit; if(isit== true) { System.out.println("isit is true"); } else { System.out.println("isit is not false"); } но он всегда null, но он должен давать false как default.. Ответ №1Когда вы объявляете его как Boolean (обратите внимание на заглавную букву), это объект, поэтому null по умолчанию. Я думаю, вы хотели сделать это

Вопрос:

Я написал следующий код

Boolean isit; if(isit== true) { System.out.println(«isit is true»); } else { System.out.println(«isit is not false»); }

но он всегда null, но он должен давать false как default..

Ответ №1

Когда вы объявляете его как Boolean (обратите внимание на заглавную букву), это объект, поэтому null по умолчанию.

Я думаю, вы хотели сделать это Boolean, а не Boolean.

Кроме того, с Boolean вы могли бы просто сделать:

boolean isit; if (isit) { System.out.println(«isit is true»); } else { System.out.println(«isit is false»); } //prints «isit is false» Ответ №2

В отличие от примитива boolean, который имеет два состояния, а именно true и false, обертка boolean имеет дополнительное третье состояние null. Когда объект boolean null, он не является ни true, ни false.

Когда вы сравниваете объект для равенства с true, значение обертывается как boolean и сравнивается с null. Результат false. То же самое произойдет, если вы сравните его с false, однако: приведенный ниже код ничего не напечатает.

Boolean isit = null; if (isit == true) { // true gets converted to Boolean.TRUE System.out.println(«isit is true») } if (isit == false) { // false gets converted to Boolean.FALSE System.out.println(«isit is false») }

Если вам нужны три состояния в ваших флагах (true, false и “not set” ), вы должны использовать boolean; в случаях, когда вам нужны только два состояния (true и false), вы должны оставаться с примитивным типом данных boolean.

Ответ №3

вы используете класс-оболочку object, а затем не забудьте инициализировать его значением default. По умолчанию все объекты wrapper class инициализируются нулевым значением.

вам нужно сделать так, чтобы

Boolean B = Boolean.TRUE; Boolean B = true;

или принять примитивное значение

boolean isit; ///default false Ответ №4

Ваш код никогда не будет компилироваться, и он выдаст ошибку, например The local variable isit may not have been initialized.

Boolean – это класс оболочки, а не примитивный тип данных. Поскольку вы просто инициализируете переменную как

Boolean isit;

и не присваивать значения, которые он никогда не будет компилировать.
Но если вы используете примитивный тип boolean like:

Boolean isit;

то если вы ничего не назначили, то по умолчанию значение будет false.

boolean isit; if(isit) { System.out.println(«isit is true»); } else { System.out.println(«isit is false»); }

Это будет иметь значение isit как false.

Ответ №5

Потому что…

INPUT:

Boolean object; boolean primitive; System.out.println(object); System.out.println(primitive);

ВЫХОД:

null false

  • Boolean – это объект.
    • Если ему не присвоено какое-либо значение, его значение будет null по умолчанию.

С другой стороны,

  • Boolean – это примитивный тип.
    • Если ему не присвоено какое-либо значение, его значение будет false по умолчанию

Ответ №6

Boolean – это объект класса-оболочки. и как соглашение java object default value is always null. если вы использовали boolean с b маленькой буквой, тогда он вызывается как примитив, и это значение, поскольку вы понимаете значение value false по умолчанию.

Ответ №7

В этом случае вам нужно инициализировать значение isit-variable либо true, либо false, othervise компилятор не позволит вам скомпилировать код, coz u используют isit-variable в IF, не придавая ему некоторого значения.
в java переменная должна быть инициализирована до того, как ее можно будет использовать.

Оцените статью
Добавить комментарий