Ответы:
Значением по умолчанию для Boolean(объекта) является null.
Значением по умолчанию для boolean(примитива) является false.
Значением по умолчанию любого Object, например Boolean, является null.
Значением по умолчанию для a booleanявляется false.
Примечание. Каждый примитив имеет класс-оболочку. Каждая оболочка использует ссылку, которая по умолчанию имеет значение null. Примитивы имеют разные значения по умолчанию:
boolean -> false
byte, char, short, int, long -> 0
float, double -> 0.0
Примечание (2): void имеет обертку, Voidкоторая также имеет значение по умолчанию nullи является единственным возможным значением (без использования хаков).
Booleanэто Object, что бы первая линия означает очевидное. Это звучит довольно просто, но для кого-то, задающего такой простой вопрос, это может помочь.
логическое
может быть trueили false.
По умолчанию значения false.
(Источник: Примитивные переменные Java )
Boolean
Может быть Booleanобъектом, представляющим trueили false, или может быть null.
По умолчанию значения null.
Если вам нужно спросить, то вам нужно явно инициализировать ваши поля / переменные, потому что, если вам придется искать это, то есть вероятность, что кто-то другой должен сделать это тоже.
Значение для примитива booleanложно, как можно увидеть здесь .
Как уже упоминалось другими, значение для Booleanпо умолчанию будет нулевым.
Булево является объектом. Так что если это переменная экземпляра, она будет нулевой. Если он объявлен в методе, вам придется его инициализировать, иначе произойдет ошибка компилятора.
Если вы объявите как примитив, то есть логическое значение. Значение будет ложным по умолчанию, если это переменная экземпляра (или переменная класса). Если он объявлен в методе, вам все равно придется инициализировать его как true или false, иначе будет ошибка компилятора.
Там нет по умолчанию для Boolean. Booleanдолжен быть построен с booleanили String. Если объект не инициализирован, он будет указывать на null.
Значением по умолчанию для примитива booleanявляется false.
http://download.oracle.com/javase/6/docs/api/java/lang/Boolean.html
https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
null. nullпо умолчанию, поэтому я не уверен, что вы имеете в виду, когда говорите, что его нет. (Возможно, вы имели в виду что-то вроде « Booleanнет trueни falseпо умолчанию»?)
class BooleanTester
{
boolean primitive;
Boolean object;
public static void main(String[] args) {
BooleanTester booleanTester = new BooleanTester();
System.out.println("primitive: " + booleanTester.getPrimitive());
System.out.println("object: " + booleanTester.getObject());
}
public boolean getPrimitive() {
return primitive;
}
public Boolean getObject() {
return object;
}
}
вывод:
primitive: false
object: null
Это кажется очевидным, но у меня была ситуация, когда Джексон, выполняя сериализацию объекта в JSON, бросал NPE после вызова метода получения, как этот, который возвращает примитивное логическое значение, которое не было назначено. Это заставило меня поверить, что Джексон получал ноль и пытался вызвать метод для него, отсюда и NPE. Я ошибался.
Мораль этой истории заключается в том, что когда Java выделяет память для примитива, эта память имеет значение, даже если оно не инициализировано, что в Java равно ложному для логического значения. Напротив, при выделении памяти для неинициализированного сложного объекта, такого как логический, он выделяет только пространство для ссылки на этот объект, а не сам объект - в памяти нет объекта, на который можно сослаться, - поэтому разрешение этой ссылки приводит к нулю.
Я думаю, что, строго говоря, «по умолчанию ложно» немного не в порядке. Я думаю, что Java не выделяет память и не присваивает ей значение false, пока она не будет явно установлена; Я думаю, что Java выделяет память, и любое значение, которое имеет эта память, совпадает со значением «ложь». Но для практических целей это одно и то же.