Jakie są domyślne wartości boolean
(pierwotne) i Boolean
(pierwotne opakowanie) w Javie?
java
boolean
default-value
Makky
źródło
źródło
Domyślna wartość dowolnej
Object
, takiej jakBoolean
, tonull
.Wartość domyślna dla a
boolean
to false.Uwaga: każdy element pierwotny ma klasę opakowania. Każde opakowanie wykorzystuje odniesienie, które ma wartość domyślną
null
. Prymitywy mają różne wartości domyślne:Uwaga (2):
void
ma opakowanie,Void
które ma również wartość domyślnąnull
i jest to jedyna możliwa wartość (bez użycia hacków).źródło
Boolean
jestObject
, że może sprawić, że pierwsza linia oznacza oczywiste. Brzmi to dość prosto, ale dla kogoś, kto zadaje takie podstawowe pytanie, może to pomóc.boolean
Może być
true
lubfalse
.Wartość domyślna to
false
.(Źródło: Java Primitive Variables )
Boolean
Może być
Boolean
obiektem reprezentującymtrue
lubfalse
, lub może byćnull
.Wartość domyślna to
null
.źródło
Jeśli musisz zapytać, musisz jawnie zainicjować swoje pola / zmienne, ponieważ jeśli musisz to sprawdzić, istnieje szansa, że ktoś inny też to zrobi.
Wartość prymitywu
boolean
jest fałszywa, co można zobaczyć tutaj .Jak wspomniano przez innych, wartość a
Boolean
będzie domyślnie pusta.źródło
Boolean to obiekt. Więc jeśli jest to zmienna instancji, będzie zerowa. Jeśli zostanie zadeklarowany w ramach metody, będziesz musiał ją zainicjować lub wystąpi błąd kompilatora.
Jeśli zadeklarujesz jako prymityw, tj. Boolean. Wartość będzie domyślnie fałszywa, jeśli jest to zmienna instancji (lub zmienna klasy). Jeśli zostanie zadeklarowany w ramach metody, nadal będziesz musiał zainicjować wartość true lub false, albo wystąpi błąd kompilatora.
źródło
Niezainicjowany
Boolean
element członkowski (w rzeczywistości odniesienie do obiektu typuBoolean
) będzie miał wartość domyślnąnull
.Niezainicjowany
boolean
(prymitywny) element członkowski będzie miał wartość domyślnąfalse
.źródło
Nie ma wartości domyślnej dla
Boolean
.Boolean
musi być zbudowany za pomocą aboolean
lub aString
. Jeśli obiekt jest niezainicjowany, wskazywałbynull
.Domyślna wartość operacji podstawowej
boolean
tofalse
.http://download.oracle.com/javase/6/docs/api/java/lang/Boolean.html
https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
źródło
null
.null
jest ustawieniem domyślnym, więc nie jestem pewien, o czym mówisz, gdy mówisz, że nie ma. (Czy miałeś na myśli coś w stylu „Boolean
nie jesttrue
anifalse
domyślnie”?)wynik:
Wydaje się to oczywiste, ale miałem sytuację, w której Jackson, serializując obiekt do JSON, rzucał NPE po wywołaniu gettera, tak jak ten, który zwraca prymitywną wartość logiczną, której nie przypisano. Doprowadziło mnie to do przekonania, że Jackson otrzymywał zero i próbował nazwać metodę, stąd NPE. Myliłem się.
Morał tej historii jest taki, że gdy Java przydziela pamięć prymitywowi, pamięć ta ma wartość, nawet jeśli nie jest zainicjowana, co dla Javy jest równe false dla wartości logicznej. Natomiast przy alokacji pamięci dla niezainicjowanego obiektu złożonego, takiego jak wartość logiczna, alokuje on tylko miejsce na odwołanie do tego obiektu, a nie na sam obiekt - nie ma obiektu w pamięci, do którego można by się odwoływać - więc rozwiązanie tego odwołania powoduje, że wartość jest pusta.
Myślę, że ściśle mówiąc „domyślnie fałsz” jest trochę poza zasięgiem. Myślę, że Java nie przydziela pamięci i nie przypisuje jej wartości false, dopóki nie zostanie jawnie ustawiona; Myślę, że Java przydziela pamięć i każda wartość, jaką ma pamięć, jest taka sama jak wartość „fałsz”. Ale ze względów praktycznych są one tym samym.
źródło