When working with variables, it's important to know what value a variable holds if it hasn’t been explicitly initialized. Not knowing this can lead to unexpected behavior or bugs in the program.
What is it?
In Java, if a variable is declared but not explicitly initialized, its default value depends on the type of the variable and its scope. The default values apply to instance variables and class variables (static) but not to local variables.
Default Values of Different Types:
- Primitive Types:
int
,short
,byte
,long
: Default value is0
.float
,double
: Default value is0.0
.char
: Default value is'\u0000'
(the null character).-
boolean
: Default value isfalse
. -
Reference Types:
- Any reference type (e.g.,
String
, arrays, objects): Default value isnull
.
Important Note on Local Variables:
- Local variables (variables inside methods) do not have a default value in Java. They must be explicitly initialized before use; otherwise, the compiler will throw an error.
Example:
java
public void myMethod() {
int localVariable; // No default value
System.out.println(localVariable); // Compiler error: variable not initialized
}
Example of Default Values:
Instance Variables Example:
public class MyClass { int number; // Default value is 0 boolean isActive; // Default value is false String name; // Default value is null }
If you create an object of MyClass
and access its fields without initialization, they will hold the default values.
Code Example:
public class Test { int number; // Default value: 0 boolean flag; // Default value: false String text; // Default value: null
public static void main(String[] args) {
Test obj = new Test();
System.out.println(obj.number); // Output: 0
System.out.println(obj.flag); // Output: false
System.out.println(obj.text); // Output: null
}
}
Summary:
- Instance and static variables have default values:
- Primitives default to 0 (or equivalent for other types like
false
or'\u0000'
). - Reference types default to
null
. - Local variables must be explicitly initialized, or the compiler will throw an error.
In conclusion, Java provides default values for instance and static variables to prevent undefined behavior, while local variables must be explicitly initialized to ensure their proper use.