๐ŸŒ
W3Schools
w3schools.io โ€บ java โ€บ java14-nullpointer-exception
java14 NullPointerException improvement new features Latest java features tutorials with examples - w3schools
December 31, 2023 - NullPointerException is thrown by the calling method or accessing property on a null object. Java 14 introduced an improvement to a user in how the error message is displayed.
๐ŸŒ
W3Schools
w3schools.com โ€บ java โ€บ java_ref_keywords.asp
Java Keywords
Java has a set of keywords that are reserved words that cannot be used as variables, methods, classes, or any other identifiers: Note: true, false, and null are not keywords, but they are literals and reserved words that cannot be used as identifiers. ... If you want to use W3Schools services ...
๐ŸŒ
freeCodeCamp
freecodecamp.org โ€บ news โ€บ a-quick-and-thorough-guide-to-null-what-it-is-and-how-you-should-use-it-d170cea62840
A quick and thorough guide to โ€˜nullโ€™: what it is, and how you should use it
June 12, 2018 - When we write code, the reason why a reference points to null is often irrelevant. We just check for null and take appropriate actions. For example, suppose that we have to write a loop that sends emails for a list of persons. The code (in Java) could look like this:
๐ŸŒ
W3Schools
w3schools.com โ€บ sql โ€บ sql_null_values.asp
SQL NULL Values - IS NULL and IS NOT NULL
SELECT CustomerName, ContactName, Address FROM Customers WHERE Address IS NOT NULL; Try it Yourself ยป ... If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail: sales@w3schools.com ยท If you want to report an error, or if you want to make a suggestion, send us an e-mail: help@w3schools.com ยท HTML Tutorial CSS Tutorial JavaScript Tutorial How To Tutorial SQL Tutorial Python Tutorial W3.CSS Tutorial Bootstrap Tutorial PHP Tutorial Java Tutorial C++ Tutorial jQuery Tutorial
๐ŸŒ
W3Schools
w3schools.in โ€บ java โ€บ keywords
Java Keywords - W3Schools
You can't use keyword as identifier in your Java programs, its reserved words in Java library and used to perform an internal operation. true, false and null are not reserved words but cannot be used as identifiers, because it is literals of built-in types.
๐ŸŒ
Upwork
upwork.com โ€บ resources โ€บ articles โ€บ null in java: understanding the basics
Null in Java: Understanding the Basics - Upwork
August 5, 2024 - Learn the essentials of handling null in Java. This guide explains the concept, common pitfalls, and best practices for Java developers.
๐ŸŒ
DataFlair
data-flair.training โ€บ blogs โ€บ java-null
Java Null - 7 Unknown Facts about Null in Java - DataFlair
May 2, 2024 - Any data value which is not present in memory or set to null explicitly will return a Null Pointer Exception if accessed. A primary example of this would be trying to access an index in the array which is out of bounds. Let us see this with an example. ... package com.dataflair.javanull; import java.util.*; public class Main { public static String nullreturnfunc() { return null; } public static void main (String[] args) { String test; test=nullreturnfunc(); System.out.println(test.charAt(3)); } }
๐ŸŒ
GeeksforGeeks
geeksforgeeks.org โ€บ java โ€บ interesting-facts-about-null-in-java
Interesting facts about null in Java - GeeksforGeeks
September 3, 2024 - An empty string is a string that contains no characters, while an empty array is an array that contains no elements. The Java programming language has a built-in null type, called "null", which is a subtype of all reference types.
Find elsewhere
Top answer
1 of 14
331

Is null an instance of anything?

No, there is no type which null is an instanceof.

15.20.2 Type Comparison Operator instanceof

CopyRelationalExpression:
    RelationalExpression instanceof ReferenceType

At run time, the result of the instanceof operator is true if the value of the RelationalExpression is not null and the reference could be cast to the ReferenceType without raising a ClassCastException. Otherwise the result is false.

This means that for any type E and R, for any E o, where o == null, o instanceof R is always false.


What set does 'null' belong to?

JLS 4.1 The Kinds of Types and Values

There is also a special null type, the type of the expression null, which has no name. Because the null type has no name, it is impossible to declare a variable of the null type or to cast to the null type. The null reference is the only possible value of an expression of null type. The null reference can always be cast to any reference type. In practice, the programmer can ignore the null type and just pretend that null is merely a special literal that can be of any reference type.


What is null?

As the JLS quote above says, in practice you can simply pretend that it's "merely a special literal that can be of any reference type".

In Java, null == null (this isn't always the case in other languages). Note also that by contract, it also has this special property (from java.lang.Object):

public boolean equals(Object obj)

For any non-null reference value x, x.equals(null) should return false.

It is also the default value (for variables that have them) for all reference types:

JLS 4.12.5 Initial Values of Variables

  • Each class variable, instance variable, or array component is initialized with a default value when it is created:
    • For all reference types, the default value is null.

How this is used varies. You can use it to enable what is called lazy initialization of fields, where a field would have its initial value of null until it's actually used, where it's replaced by the "real" value (which may be expensive to compute).

There are also other uses. Let's take a real example from java.lang.System:

public static Console console()

Returns: The system console, if any, otherwise null.

This is a very common use pattern: null is used to denote non-existence of an object.

Here's another usage example, this time from java.io.BufferedReader:

public String readLine() throws IOException

Returns: A String containing the contents of the line, not including any line-termination characters, or null if the end of the stream has been reached.

So here, readLine() would return instanceof String for each line, until it finally returns a null to signify the end. This allows you to process each line as follows:

CopyString line;
while ((line = reader.readLine()) != null) {
   process(line);
}

One can design the API so that the termination condition doesn't depend on readLine() returning null, but one can see that this design has the benefit of making things concise. Note that there is no problem with empty lines, because an empty line "" != null.

Let's take another example, this time from java.util.Map<K,V>:

V get(Object key)

Returns the value to which the specified key is mapped, or null if this map contains no mapping for the key.

If this map permits null values, then a return value of null does not necessarily indicate that the map contains no mapping for the key; it's also possible that the map explicitly maps the key to null. The containsKey operation may be used to distinguish these two cases.

Here we start to see how using null can complicate things. The first statement says that if the key isn't mapped, null is returned. The second statement says that even if the key is mapped, null can also be returned.

In contrast, java.util.Hashtable keeps things simpler by not permitting null keys and values; its V get(Object key), if returns null, unambiguously means that the key isn't mapped.

You can read through the rest of the APIs and find where and how null is used. Do keep in mind that they aren't always the best practice examples.

Generally speaking, null are used as a special value to signify:

  • Uninitialized state
  • Termination condition
  • Non-existing object
  • An unknown value

How is it represented in the memory?

In Java? None of your concern. And it's best kept that way.


Is null a good thing?

This is now borderline subjective. Some people say that null causes many programmer errors that could've been avoided. Some say that in a language that catches NullPointerException like Java, it's good to use it because you will fail-fast on programmer errors. Some people avoid null by using Null object pattern, etc.

This is a huge topic on its own, so it's best discussed as answer to another question.

I will end this with a quote from the inventor of null himself, C.A.R Hoare (of quicksort fame):

I call it my billion-dollar mistake. It was the invention of the null reference in 1965. At that time, I was designing the first comprehensive type system for references in an object oriented language (ALGOL W). My goal was to ensure that all use of references should be absolutely safe, with checking performed automatically by the compiler. But I couldn't resist the temptation to put in a null reference, simply because it was so easy to implement. This has led to innumerable errors, vulnerabilities, and system crashes, which have probably caused a billion dollars of pain and damage in the last forty years.

The video of this presentation goes deeper; it's a recommended watch.

2 of 14
33

Is null an instance of anything?

No. That is why null instanceof X will return false for all classes X. (Don't be fooled by the fact that you can assign null to a variable whose type is an object type. Strictly speaking, the assignment involves an implicit type conversion; see below.)

What set does 'null' belong to?

It is the one and only member of the null type, where the null type is defined as follows:

"There is also a special null type, the type of the expression null, which has no name. Because the null type has no name, it is impossible to declare a variable of the null type or to cast to the null type. The null reference is the only possible value of an expression of null type. The null reference can always be cast to any reference type. In practice, the programmer can ignore the null type and just pretend that null is merely a special literal that can be of any reference type." JLS 4.1

What is null?

See above. In some contexts, null is used to denote "no object" or "unknown" or "unavailable", but these meanings are application specific.

How is it represented in the memory?

That is implementation specific, and you won't be able to see the representation of null in a pure Java program. (But null is represented as a zero machine address / pointer in most if not all Java implementations.)

๐ŸŒ
W3Schools
w3schools.com โ€บ c โ€บ c_null.php
C NULL
Tip: Always check if a pointer is NULL before using it. This helps avoid crashes caused by accessing invalid memory. ... If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail: sales@w3schools.com ยท If you want to report an error, or if you want to make a suggestion, send us an e-mail: help@w3schools.com ยท HTML Tutorial CSS Tutorial JavaScript Tutorial How To Tutorial SQL Tutorial Python Tutorial W3.CSS Tutorial Bootstrap Tutorial PHP Tutorial Java Tutorial C++ Tutorial jQuery Tutorial
๐ŸŒ
W3Schools
w3schools.com โ€บ java โ€บ java_data_types_non-prim.asp
Java Non-Primitive Data Types
Primitive types always hold a value, whereas non-primitive types can be null. Examples of non-primitive types are Strings, Arrays, Classes etc. You will learn more about these in a later chapter. ... If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail: sales@w3schools.com ยท If you want to report an error, or if you want to make a suggestion, send us an e-mail: help@w3schools.com ยท HTML Tutorial CSS Tutorial JavaScript Tutorial How To Tutorial SQL Tutorial Python Tutorial W3.CSS Tutorial Bootstrap Tutorial PHP Tutorial Java Tutorial C++ Tutorial jQuery Tutorial
๐ŸŒ
DataCamp
datacamp.com โ€บ doc โ€บ java โ€บ null
null Keyword in Java: Usage & Examples
Learn about the `null` keyword in Java, its usage, syntax, and best practices to avoid `NullPointerException` with practical examples.
๐ŸŒ
Medium
medium.com โ€บ @mbanaee61 โ€บ mastering-null-in-java-55f20d4289da
Mastering 'null' in Java. Introduction | by Mahad | Medium
July 4, 2025 - While simple, improper handling of null is the #1 cause of NullPointerException, a common and costly runtime error. In this complete guide, we will go from basic concepts to advanced patterns, learn to convert NPEs to compile-time safety, and use proven patterns and tooling to write safe, modern Java code.
๐ŸŒ
Medium
donraab.medium.com โ€บ what-if-null-was-an-object-in-java-3f1974954be2
What if null was an Object in Java? - Donald Raab - Medium
January 5, 2024 - In Java, there is a literal named null. You can assign null to any variable that has an Object type, but the reference the variable points to is not an instance of an Object.
๐ŸŒ
Codemia
codemia.io โ€บ knowledge-hub โ€บ path โ€บ what_is_null_in_java
What is null in Java?
Enhance your system design skills with over 120 practice problems, detailed solutions, and hands-on exercises
๐ŸŒ
W3Schools
w3schools.com โ€บ java โ€บ java_syntax.asp
Java Syntax
W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.
๐ŸŒ
Logit
logit.io โ€บ blog โ€บ post โ€บ null-in-java
The Concept Of Null In Java
February 4, 2025 - Generally speaking, null are used as a special value to signify: ... There are two types of variables in Java. These are reference types and primitive types. Primitive types are the ones that would hold values and reference types are the ones that can store references.
๐ŸŒ
I'd Rather Be Writing
idratherbewriting.com โ€บ java-null
Java: Null | I'd Rather Be Writing Blog and API doc course
January 2, 2015 - They have no memory address, no corresponding primitive or object exists for them, and so they are null. That might sound like a problem, and the whole concept of null often causes novice programmers some trouble. You can keep it straight by remembering that a null is a non-existent reference.
๐ŸŒ
W3Schools
w3schools.com โ€บ java โ€บ java_try_catch.asp
Java Exceptions (Try...Catch)
Tip: For a list of all errors and exception types, go to our Java Errors and Exception Types Reference. ... If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail: sales@w3schools.com