J'ai ceci:
public static class RaceParam { boolean keep; }
qui ne se compilera pas car vous ne pouvez pas affecter null à une primitive. Donc, cela soulève la question, quelle valeur conserve-t-elle quand nous faisons cela:
public static class RaceParam { boolean keep = null; // does not compile }
est-il par défaut faux ou vrai? Semble dangereux de choisir quelque chose par défaut.
3 Réponses :
booléen
vaut par défaut false
boolean
est une primitive et ne peut contenir que les valeurs true ou faux . La valeur par défaut est false.
Boolean keep = null;
Utilisez la classe wrapper Boolean
si vous voulez attribuer une valeur nulle. Par exemple:
boolean keep; // Defaults to `false`.
cela ne répond pas à la question tho, je me demande quelle est la valeur par défaut pour le champ de conservation s'il n'est pas explicitement assigné à null..et le raisonnement derrière cela si possible.
Mise à jour de la réponse. La valeur par défaut est false.
@MrCholo Pour être honnête, vous n'avez pas demandé ce qui arrive à un champ booléen
qui ne reçoit rien non plus.
@Jai MrCholo a toujours raison!
Depuis jls 4.12 .5. Valeurs initiales des variables :
Chaque variable de classe, variable d'instance ou composant de tableau est initialisé avec une valeur par défaut lors de sa création
Pour le type booléen, la valeur par défaut est false.
La valeur par défaut de Boolean
keep est nulle, comme tout autre objet. Vous devez l'initialiser explicitement.
La question concerne boolean
la primitive et non boolean
la classe.
Classe wrapper utilisateur si vous souhaitez définir null. utilisez Boolean au lieu de boolean.
Oui, il est (potentiellement) dangereux de s'appuyer sur la valeur par défaut d'une primitive. Vous devez attribuer une valeur par défaut explicite si possible. Concernant le problème
null
, vous pouvez utiliser un champBoolean
à la place.@TimBiegeleisen bien sûr mais quelle est la valeur par défaut d'un booléen primitif? :)
Pas d'accord, il est «dangereux» de se fier aux valeurs par défaut. Les valeurs par défaut en Java sont bien définies. Ils sont nuls pour toutes les primitives sauf
boolean
, qui estfalse
. Pour les références, c'estnull
.@MrCholo C'est
faux
.@markspace Je suis d'accord, mais d'un point de vue de logique métier, il peut parfois être plus sûr de toujours attribuer explicitement une valeur par défaut.
@MichaWiedenmann L ' original actuellement lié de ce duplicata semble être différent de celui que vous avez cité. Cette question ici est en effet un double de l'original actuellement lié.
@MichaWiedenmann Le seul endroit où j'ai vu la phrase "Quelle est la valeur par défaut de bool?" est dans vos commentaires. Je ne sais pas d’où vous venez. Je soupçonnais que quelqu'un quelque part avait changé quelque chose, d'où mon commentaire pour vous informer des conditions actuelles. Cette question et son original lié demandent pourquoi nous ne pouvons pas attribuer null à une primitive booléenne.
@BasilBourque Ah, d'accord, je pense que je vous ai maintenant. 1. Désolé, bool est une faute de frappe aurait dû être booléen. 2. OP déclare comme un fait que vous ne pouvez pas attribuer null, il semble le savoir et il ne le demande pas. Au lieu de cela, OP demande: "Cela pose la question, quelle valeur conserve-t-elle quand nous faisons cela:"