¿Cuáles son los valores predeterminados de boolean
(primitivo) y Boolean
(contenedor primitivo) en Java?
java
boolean
default-value
Makky
fuente
fuente
El valor predeterminado de cualquiera
Object
, comoBoolean
, esnull
.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:Nota (2):
void
tiene un contenedorVoid
que también tiene un valor predeterminadonull
y es solo un valor posible (sin usar hacks).fuente
Boolean
esObject
, 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
ofalse
.El valor por defecto es
false
.(Fuente: Variables primitivas de Java )
Booleano
Puede ser un
Boolean
objeto que representatrue
ofalse
, o puede sernull
.El valor por defecto es
null
.fuente
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.fuente
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.
fuente
Un
Boolean
miembro no inicializado (en realidad, una referencia a un objeto de tipoBoolean
) tendrá el valor predeterminado denull
.Un
boolean
miembro no inicializado (primitivo) tendrá el valor predeterminado defalse
.fuente
No hay valor predeterminado para
Boolean
.Boolean
debe construirse con aboolean
o aString
. Si el objeto no está inicializado, apuntaría anull
.El valor predeterminado de primitivo
boolean
esfalse
.http://download.oracle.com/javase/6/docs/api/java/lang/Boolean.html
https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
fuente
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 estrue
nifalse
por defecto"?)salida:
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.
fuente