Вопрос:
Я написал следующий код
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 переменная должна быть инициализирована до того, как ее можно будет использовать.