Quel est le troisième état booléen en java?
Question
Alors que je sais que, par définition, un booléen se compose de seulement deux états, vrai ou faux. Je me demandais quelle valeur un booléen ont avant d'être initialisé avec un de ces états.
La solution
Modifier À la demande:
sauf si vous utilisez le booléenne , qui par défaut est nulle. - sudhir.j
Autres conseils
Si elle est une variable locale, il est une erreur de compilateur pour faire référence avant qu'il ne soit initialisé. S'il est un champ, il est initialisé à false.
public class NewMain {
boolean foo;
Boolean bar;
public static void main(String[] args) {
NewMain obj = new NewMain();
obj.whatBoolean();
}
public void whatBoolean() {
System.out.println(foo);
System.out.println(bar);
}
}
sorties
false
null
Je sais que cela a été plus philosophique d'une question, mais grâce à autoboxing vous pouvez utiliser Java comme presque vraiment langage OO (types primitifs Je déteste avoir ... maintenant que si elle travaillerait trop inverse). Il ne change cependant le comportement lorsque vous utilisez un objet (pour le meilleur OMI).
Il n'y a pas de troisième état. Comme l'a dit @Yishai, si vous ne donnez pas une valeur, les champs booléens par défaut à false. Les variables locales doivent être attribuées avant utilisation:
Accès à un non initialisée locale variable entraînera une compilation erreur
Voir la doc .
A défaut JAVA types booléens False.
FYI, par défaut booléennes à défaut de nombres primitive faux, à 0, 0L, 0f ou 0d comme valeurs par défaut appropriées, carbonisation à '\ 0', les références objet (tel Boolean) par défaut à null.
Cela vaut également pour le contenu des tableaux. (A gotcha commun est un tableau d'objets est initialement plein de valeurs nulles)
Il est false
Si vous aviez quelque chose comme
boolean isTrue;
System.out.println(isTrue);
Vous devriez obtenir une erreur de compilation parce que le booléen n'a pas été initialisé. Par défaut, lorsque vous essayez d'initialiser ce qu'il sera défini sur false;