Ответы:
Значением по умолчанию для 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 выделяет память, и любое значение, которое имеет эта память, совпадает со значением «ложь». Но для практических целей это одно и то же.