Risposte:
Il valore predefinito per un Boolean
(oggetto) è null
.
Il valore predefinito per un boolean
(primitivo) è false
.
Il valore predefinito di any Object
, ad esempio Boolean
, è null
.
Il valore predefinito per a boolean
è falso.
Nota: ogni primitiva ha una classe wrapper. Ogni wrapper utilizza un riferimento che ha un valore predefinito di null
. Le primitive hanno valori predefiniti diversi:
boolean -> false
byte, char, short, int, long -> 0
float, double -> 0.0
Nota (2): void
ha un wrapper Void
che ha anche un valore predefinito di null
ed è il suo unico valore possibile (senza usare hack).
Boolean
si Object
, che renderebbero la prima linea ovvio significato. Sembra abbastanza semplice, ma per qualcuno che fa una domanda di base come questa può essere d'aiuto.
booleano
Può essere true
o false
.
Il valore predefinito è false
.
(Fonte: Variabili primitive Java )
Booleano
Può essere un Boolean
oggetto che rappresenta true
o false
, o può essere null
.
Il valore predefinito è null
.
Se devi chiedere, allora devi inizializzare esplicitamente i tuoi campi / variabili, perché se devi cercarlo, allora è probabile che anche qualcun altro debba farlo.
Il valore per una primitiva boolean
è falso, come si può vedere qui .
Come menzionato da altri, il valore di a Boolean
sarà nullo per impostazione predefinita.
Boolean è un oggetto. Quindi se è una variabile di istanza sarà nulla. Se è dichiarato all'interno di un metodo, dovrai inizializzarlo o si verificherà un errore del compilatore.
Se dichiari come un primitivo cioè booleano. Il valore sarà falso per impostazione predefinita se si tratta di una variabile di istanza (o variabile di classe). Se viene dichiarato all'interno di un metodo, dovrai comunque inizializzarlo su true o false oppure si verificherà un errore del compilatore.
Non esiste alcun valore predefinito per Boolean
. Boolean
deve essere costruito con a boolean
o a String
. Se l'oggetto non è inizializzato, farebbe riferimento a null
.
Il valore predefinito di primitive 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
è l'impostazione predefinita, quindi non sono sicuro di cosa ti riferisci quando dici che non ce n'è uno. (Forse intendevi qualcosa come " Boolean
non è true
né false
di default"?)
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;
}
}
produzione:
primitive: false
object: null
Questo sembra ovvio, ma ho avuto una situazione in cui Jackson, durante la serializzazione di un oggetto su JSON, lanciava un NPE dopo aver chiamato un getter, proprio come questo, che restituisce un booleano primitivo che non è stato assegnato. Questo mi ha portato a credere che Jackson stesse ricevendo un null e provando a chiamare un metodo su di esso, quindi l'NPE. Mi sbagliavo.
La morale della storia è che quando Java alloca memoria per una primitiva, quella memoria ha un valore anche se non inizializzato, che Java equivale a falso per un valore booleano. Al contrario, quando alloca memoria per un oggetto complesso non inizializzato come un booleano, alloca solo lo spazio per un riferimento a quell'oggetto, non l'oggetto stesso - non c'è alcun oggetto in memoria a cui fare riferimento - risolvendo tale riferimento risulta nullo.
Penso che in senso stretto, "il valore predefinito è falso" è un po 'fuori dal comune. Penso che Java non alloca la memoria e gli assegni un valore false fino a quando non viene impostato esplicitamente; Penso che Java alloca la memoria e qualunque valore abbia la stessa memoria è uguale al valore di 'false'. Ma per scopi pratici sono la stessa cosa.