Каковы значения по умолчанию boolean
(примитив) и Boolean
(примитивная оболочка) в Java?
java
boolean
default-value
Makky
источник
источник
Значением по умолчанию любого
Object
, напримерBoolean
, являетсяnull
.Значением по умолчанию для a
boolean
является false.Примечание. Каждый примитив имеет класс-оболочку. Каждая оболочка использует ссылку, которая по умолчанию имеет значение
null
. Примитивы имеют разные значения по умолчанию:Примечание (2):
void
имеет обертку,Void
которая также имеет значение по умолчаниюnull
и является единственным возможным значением (без использования хаков).источник
Boolean
этоObject
, что бы первая линия означает очевидное. Это звучит довольно просто, но для кого-то, задающего такой простой вопрос, это может помочь.логическое
может быть
true
илиfalse
.По умолчанию значения
false
.(Источник: Примитивные переменные Java )
Boolean
Может быть
Boolean
объектом, представляющимtrue
илиfalse
, или может бытьnull
.По умолчанию значения
null
.источник
Если вам нужно спросить, то вам нужно явно инициализировать ваши поля / переменные, потому что, если вам придется искать это, то есть вероятность, что кто-то другой должен сделать это тоже.
Значение для примитива
boolean
ложно, как можно увидеть здесь .Как уже упоминалось другими, значение для
Boolean
по умолчанию будет нулевым.источник
Булево является объектом. Так что если это переменная экземпляра, она будет нулевой. Если он объявлен в методе, вам придется его инициализировать, иначе произойдет ошибка компилятора.
Если вы объявите как примитив, то есть логическое значение. Значение будет ложным по умолчанию, если это переменная экземпляра (или переменная класса). Если он объявлен в методе, вам все равно придется инициализировать его как true или false, иначе будет ошибка компилятора.
источник
Неинициализированный
Boolean
элемент (фактически ссылка на объект типаBoolean
) будет иметь значение по умолчаниюnull
.Неинициализированный
boolean
(примитивный) член будет иметь значение по умолчанию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
по умолчанию»?)вывод:
Это кажется очевидным, но у меня была ситуация, когда Джексон, выполняя сериализацию объекта в JSON, бросал NPE после вызова метода получения, как этот, который возвращает примитивное логическое значение, которое не было назначено. Это заставило меня поверить, что Джексон получал ноль и пытался вызвать метод для него, отсюда и NPE. Я ошибался.
Мораль этой истории заключается в том, что когда Java выделяет память для примитива, эта память имеет значение, даже если оно не инициализировано, что в Java равно ложному для логического значения. Напротив, при выделении памяти для неинициализированного сложного объекта, такого как логический, он выделяет только пространство для ссылки на этот объект, а не сам объект - в памяти нет объекта, на который можно сослаться, - поэтому разрешение этой ссылки приводит к нулю.
Я думаю, что, строго говоря, «по умолчанию ложно» немного не в порядке. Я думаю, что Java не выделяет память и не присваивает ей значение false, пока она не будет явно установлена; Я думаю, что Java выделяет память, и любое значение, которое имеет эта память, совпадает со значением «ложь». Но для практических целей это одно и то же.
источник