What are the default values of boolean (primitive) and Boolean (primitive wrapper) in Java?
8 Answers
The default value for a Boolean (object) is null.
The default value for a boolean (primitive) is false.
Comments
The default value of any Object, such as Boolean, is null.
The default value for a boolean is false.
Note: Every primitive has a wrapper class. Every wrapper uses a reference which has a default of null. Primitives have different default values:
boolean -> false
byte, char, short, int, long -> 0
float, double -> 0.0
Note (2): void has a wrapper Void which also has a default of null and is it's only possible value (without using hacks).
1 Comment
Boolean is Object, that would make the first line meaning obvious. This sounds pretty basic, but for someone asking a basic question like this it may help.boolean
Can be true or false.
Default value is false.
(Source: Java Primitive Variables)
Boolean
Can be a Boolean object representing true or false, or can be null.
Default value is null.
Comments
If you need to ask, then you need to explicitly initialize your fields/variables, because if you have to look it up, then chances are someone else needs to do that too.
The value for a primitive boolean is false as can be seen here.
As mentioned by others the value for a Boolean will be null by default.
4 Comments
Boolean is an Object. So if it's an instance variable it will be null. If it's declared within a method you will have to initialize it, or there will be a compiler error.
If you declare as a primitive i.e. boolean. The value will be false by default if it's an instance variable (or class variable). If it's declared within a method you will still have to initialize it to either true or false, or there will be a compiler error.
Comments
There is no default for Boolean. Boolean must be constructed with a boolean or a String. If the object is unintialized, it would point to null.
The default value of primitive boolean is false.
http://download.oracle.com/javase/6/docs/api/java/lang/Boolean.html
https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
6 Comments
null. null is the default, so I'm not sure what you are referring to when you say there isn't one. (Did you maybe mean something like "Boolean is neither true nor false by default"?)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;
}
}
output:
primitive: false
object: null
This seems obvious but I had a situation where Jackson, while serializing an object to JSON, was throwing an NPE after calling a getter, just like this one, that returns a primitive boolean which was not assigned. This led me to believe that Jackson was receiving a null and trying to call a method on it, hence the NPE. I was wrong.
Moral of the story is that when Java allocates memory for a primitive, that memory has a value even if not initialized, which Java equates to false for a boolean. By contrast, when allocating memory for an uninitialized complex object like a Boolean, it allocates only space for a reference to that object, not the object itself - there is no object in memory to refer to - so resolving that reference results in null.
I think that strictly speaking, "defaults to false" is a little off the mark. I think Java does not allocate the memory and assign it a value of false until it is explicitly set; I think Java allocates the memory and whatever value that memory happens to have is the same as the value of 'false'. But for practical purpose they are the same thing.