Respuestas:
El valor predeterminado para un Boolean
(objeto) es null
.
El valor predeterminado para a boolean
(primitivo) es false
.
El valor predeterminado de cualquiera Object
, como Boolean
, es null
.
El valor predeterminado para a boolean
es falso.
Nota: Cada primitivo tiene una clase de contenedor. Cada contenedor utiliza una referencia que tiene un valor predeterminado de null
. Las primitivas tienen diferentes valores predeterminados:
boolean -> false
byte, char, short, int, long -> 0
float, double -> 0.0
Nota (2): void
tiene un contenedor Void
que también tiene un valor predeterminado null
y es solo un valor posible (sin usar hacks).
Boolean
es Object
, que haría que la primera línea de significado obvio. Esto suena bastante básico, pero para alguien que hace una pregunta básica como esta puede ser útil.
booleano
puede ser true
o false
.
El valor por defecto es false
.
(Fuente: Variables primitivas de Java )
Booleano
Puede ser un Boolean
objeto que representa true
o false
, o puede ser null
.
El valor por defecto es null
.
Si necesita preguntar, debe inicializar explícitamente sus campos / variables, porque si tiene que buscarlo, entonces es probable que alguien más tenga que hacerlo también.
El valor de una primitiva boolean
es falso como se puede ver aquí .
Según lo mencionado por otros, el valor de a Boolean
será nulo por defecto.
Boolean es un objeto. Entonces, si es una variable de instancia, será nula. Si se declara dentro de un método, tendrá que inicializarlo, o habrá un error del compilador.
Si declaras como primitivo, es decir, booleano. El valor será falso por defecto si se trata de una variable de instancia (o variable de clase). Si se declara dentro de un método, aún tendrá que inicializarlo como verdadero o falso, o habrá un error del compilador.
Un Boolean
miembro no inicializado (en realidad, una referencia a un objeto de tipo Boolean
) tendrá el valor predeterminado de null
.
Un boolean
miembro no inicializado (primitivo) tendrá el valor predeterminado de false
.
No hay valor predeterminado para Boolean
. Boolean
debe construirse con a boolean
o a String
. Si el objeto no está inicializado, apuntaría a null
.
El valor predeterminado de primitivo boolean
es 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
es el valor predeterminado, por lo que no estoy seguro de a qué se refiere cuando dice que no hay ninguno. (¿Quizás quisiste decir algo como " Boolean
no es true
ni false
por defecto"?)
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;
}
}
salida:
primitive: false
object: null
Esto parece obvio, pero tuve una situación en la que Jackson, mientras serializaba un objeto para JSON, estaba lanzando un NPE después de llamar a un getter, como este, que devuelve un booleano primitivo que no fue asignado. Esto me llevó a creer que Jackson estaba recibiendo un valor nulo e intentando llamar a un método, de ahí el NPE. Estaba equivocado.
La moraleja de la historia es que cuando Java asigna memoria para una primitiva, esa memoria tiene un valor incluso si no se inicializa, lo que Java equivale a falso para un booleano. Por el contrario, cuando asigna memoria para un objeto complejo no inicializado como un booleano, asigna solo espacio para una referencia a ese objeto, no el objeto en sí mismo (no hay ningún objeto en la memoria para hacer referencia), por lo que resolver esa referencia resulta nulo.
Creo que, estrictamente hablando, "el valor predeterminado es falso" está un poco fuera de lugar. Creo que Java no asigna la memoria ni le asigna un valor falso hasta que se establece explícitamente; Creo que Java asigna la memoria y cualquier valor que tenga esa memoria es el mismo que el valor de 'falso'. Pero a efectos prácticos son lo mismo.