The reference types are class types, interface types, and array types . There is also a special null type . A variable is a storage location. A variable of a primitive type always holds a value of that exact type. A variable of a class type T can hold a null reference or a reference to an instance of class T or of any class that is a subclass of T. A variable of an interface type can hold a null reference or a reference to any instance of any class that implements the interface.
All types have a default value.
For type int, the default value is zero, that is, 0. For type float, the default value is positive zero, that is, 0.0f. For type double, the default value is positive zero, that is, 0.0d. For type boolean, the default value is false. For all reference types, the default value is null.