Réponses:
La valeur par défaut d'un Boolean
(objet) est null
.
La valeur par défaut pour une boolean
(primitive) est false
.
La valeur par défaut de any Object
, comme Boolean
, est null
.
La valeur par défaut de a boolean
est false.
Remarque: Chaque primitive a une classe wrapper. Chaque wrapper utilise une référence dont la valeur par défaut est null
. Les primitives ont différentes valeurs par défaut:
boolean -> false
byte, char, short, int, long -> 0
float, double -> 0.0
Remarque (2): void
a un wrapper Void
qui a également une valeur par défaut null
et est sa seule valeur possible (sans utiliser de hacks).
Boolean
est Object
, cela ferait la première ligne signification évidente. Cela semble assez basique, mais pour quelqu'un qui pose une question de base comme celle-ci, cela peut aider.
booléen
Peut être true
ou false
.
La valeur par défaut est false
.
(Source: Variables primitives Java )
Boolean
Peut être un Boolean
objet représentant true
ou false
, ou peut être null
.
La valeur par défaut est null
.
Si vous devez demander, vous devez initialiser explicitement vos champs / variables, car si vous devez les rechercher, il y a de fortes chances que quelqu'un d'autre ait besoin de le faire également.
La valeur d'une primitive boolean
est fausse comme on peut le voir ici .
Comme mentionné par d'autres, la valeur de a Boolean
sera nulle par défaut.
Boolean est un objet. Donc, si c'est une variable d'instance, elle sera nulle. S'il est déclaré dans une méthode, vous devrez l'initialiser, ou il y aura une erreur de compilation.
Si vous déclarez comme primitif, c'est-à-dire booléen. La valeur sera fausse par défaut s'il s'agit d'une variable d'instance (ou d'une variable de classe). S'il est déclaré dans une méthode, vous devrez toujours l'initialiser à true ou false, ou il y aura une erreur de compilation.
Il n'y a pas de valeur par défaut pour Boolean
. Boolean
doit être construit avec un boolean
ou un String
. Si l'objet n'est pas initialisé, il pointerait vers null
.
La valeur par défaut de primitive boolean
est 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
est la valeur par défaut, donc je ne sais pas à quoi vous faites référence lorsque vous dites qu'il n'y en a pas. (Vouliez-vous dire quelque chose comme " Boolean
n'est true
ni false
par défaut"?)
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;
}
}
production:
primitive: false
object: null
Cela semble évident, mais j'ai eu une situation où Jackson, tout en sérialisant un objet en JSON, lançait un NPE après avoir appelé un getter, tout comme celui-ci, qui renvoie un booléen primitif qui n'a pas été attribué. Cela m'a amené à croire que Jackson recevait un nul et essayait d'appeler une méthode dessus, d'où le NPE. J'avais tort.
La morale de l'histoire est que lorsque Java alloue de la mémoire à une primitive, cette mémoire a une valeur même si elle n'est pas initialisée, ce que Java équivaut à false pour un booléen. En revanche, lors de l'allocation de mémoire à un objet complexe non initialisé comme un booléen, il alloue uniquement de l'espace pour une référence à cet objet, pas à l'objet lui-même - il n'y a aucun objet en mémoire auquel se référer - donc la résolution de cette référence se traduit par null.
Je pense qu'à proprement parler, "par défaut à faux" est un peu hors de propos. Je pense que Java n'alloue pas la mémoire et ne lui affecte pas la valeur false jusqu'à ce qu'elle soit explicitement définie; Je pense que Java alloue la mémoire et quelle que soit la valeur de la mémoire est la même que la valeur de «faux». Mais pour des raisons pratiques, c'est la même chose.