What is null in Java
In this article, we will discuss the null in java. Java and null share a unique bond across the board, whether we are using it as a default or placeholder or being used as a filler for a variable intentionally.
1. What is null and why it is used?
Recall what a variable is and what a value is. A common analogy will be to consider the variable as a container and value as what the container has inside. Each variable must have a type that will define the kind of value contained within the container.
There are two major categories of types in Java: primitive and reference. Variables declared of a primitive type store values; variables declared of a reference type store references.
Main.java
public class Main {
private static Object obj;// this is an uninitialised variable of reference type. hence it will store null in it.
private static int numOne; // this is an uninitialised int. it is of primitive type. so it will store 0 until initialised.
public static void main(String[] args) {
int num = 10;// this is an initialised integer with value 10.
System.out.println(num);
System.out.println(numOne);
System.out.println(obj);
}
}
In the code snippet shown above, we have 3 cases, One is the Object obj
and int numOne
, which are have not been initialized and int num which is initialized to 10. Since the Object is reference type and int is a primitive type, obj has null stored in it and numOne has 0 stored in it. The output of Main.java is shown in fig 1 below.
2. Properties of null
In this section we will discuss couple of properties associated with null.
2.1 null keyword
In Java, this word is a reserved word for literal values. It seems like a keyword, but actually, it is a literal similar to true and false.
2.2 null used as defaults
This word is used as a default value for the uninitialized variable of reference types like Object or user-defined class. It will not be used as a default variable for any variable of primitive types, like, int and float.
2.3 Casting null objects to Other Types in Java
Typecasting null to any reference type is fine at both compile-time and runtime. It will not throw any error or exception. The same is shown in the code snippet below.
CastingNull.java
public class CastingNull {
public static void main(String[] args) {
String myStr = (String) null; // null can be type cast to String
Integer myItr = (Integer) null; // it can also be type casted to Integer
Double myDbl = (Double) null; // yes it's possible, no error
System.out.println("Printing null casted to String");
System.out.println(myStr);
System.out.println("Printing null casted to Integer");
System.out.println(myItr);
System.out.println("Printing null casted to Double");
System.out.println(myDbl);
}
}
The output of the above code snippet is shown in fig 2 below.
2.4 null with instanceof operator
instanceof
operator will return false if used against any reference variable with null value or null literal itself. We can see it in action in code snippet below
NullWithInstanceOf.java
public class NullWithInstanceOf {
public static void main(String[] args) {
Integer variableWithNull = null;
System.out.println("Checking instanceof with Integer type variable with null stored");
if (variableWithNull instanceof Integer) {
System.out.println("variableWithNull is instance of Integer");
} else {
System.out.println("variableWithNull is NOT an instance of Integer");
}
}
}
The output of the above code snippet is shown in fig 3 below.
3. NullPointerException
NullPointerException is a RuntimeException . In Java, a special null value can be assigned to an object reference. NullPointerException is thrown when an application attempts to use an object reference with null value.
3.1 When is NullPointerException thrown
NullPointerException can be thrown in any case where running java program tries to use an object reference with null value in it. This can happen when java tries to call an instance method on the object referred by a null reference.
3.2 NullPointerException with Static variables
In this section, we will cover the case when we try to use static java variables with a null reference. Java will not throw an NullPointerException
in this case. This is explained in the code snippet below.
NullPointerExceptionWithStatic.java
public class NullPointerExceptionWithStatic {
private static Object unInitialisedStaticObject; // this is an uninitialised static object
public static void main(String[] args) {
System.out.println();
System.out.print("What is the value of unInitialisedStaticObject :: ");
System.out.println(unInitialisedStaticObject); // java will not throw NullPointerException
}
}
The output of the above code snippet is shown in fig 4 below.
3.3 NullPointerException with non Static variables
In this section we will cover the case when we try to use non static java variables with null reference. Java will throw an NullPointerException
in this case. This will happen in case of any wrapper class with value null will throw NullPointerException
when Java unbox them into primitive values. This is explained in the code snippet below.
NullPointerExceptionWithNonStatic.java
import java.util.HashMap;
import java.util.Map;
public class NullPointerExceptionWithNonStatic {
public static void main(String[] args) {
Map numberAndCount = new HashMap();
int[] numbers = {3, 5, 7, 9, 11, 13, 17, 19, 2, 3, 5, 33, 12, 5};
for (int i : numbers) {
int count = (int) numberAndCount.get(i); // NullPointerException
numberAndCount.put(i, count++);
}
}
}
The output of the above code snippet is shown in fig 5 below.
4. null in Java – Summary
To summarize we have covered the common scenarios around the null in java. We have cover how to use it and where to use it and how it can be used as the placeholder for reference type variables. We have also discussed a very common exception associated with i.e., NullPointerException.
5. More articles
- Java Tutorial for Beginners (with video)
- Best Way to Learn Java Programming Online
- Java Array – java.util.Arrays Example (with Video)
- Java List Example
- Java Constructor Example (with video)
- Try Catch Java Example
- java.lang.NullPointerException Example – How to handle Java Null Pointer Exception (with video)
6. Download the Source Code
You can download the full source code of this example here: What is null in Java
Last updated on Jul. 28th, 2021