Is null
is a keyword in Java?
-
Why is this question -1? – Mystic Feb 06 '09 at 10:31
-
4probably because it would've taken less time to google the answer than to ask it. The second google result has the answer in the summary, you wouldn't even have to click the link. – DevinB Feb 06 '09 at 13:16
-
No it is literal in Java.You can what null is [here][1] [1]: http://stackoverflow.com/questions/2707322/what-is-null-in-java/7258515#7258515 – Sanjay Jain Aug 31 '11 at 14:35
9 Answers
Not according to the Java Language Specification list of keywords. On the other hand, this doesn't compile:
int null = 10;
The rules for identifiers specify that:
An identifier is an unlimited-length sequence of Java letters and Java digits, the first of which must be a Java letter. An identifier cannot have the same spelling (Unicode character sequence) as a keyword (§3.9), boolean literal (§3.10.3), or the null literal (§3.10.7).
I'm not sure what the benefit of making it not-a-keyword is, to be honest.
-
Lol, this answer implies that there are implementations of Java that accept null as a keyword. – Toon Krijthe Feb 06 '09 at 09:12
-
1Gamecat, the way i read it, it says clearly the spec does _not_ consider null a keyword. – tehvan Feb 06 '09 at 09:17
Not a keyword - the null literal.
an identifier (oops, no it isn't)

- 9,564
- 146
- 81
- 122

- 1,026,079
- 266
- 2,566
- 2,900
-
1It's not an identifier either, according to http://java.sun.com/docs/books/jls/third_edition/html/lexical.html#40625 – Jon Skeet Feb 06 '09 at 09:15
null
is a literal similar to true
and false
in Java. These are not keywords because these are the values of something. As null
is the value of a reference variable, true
is the value of a boolean variable.

- 9,564
- 146
- 81
- 122

- 91
- 1
- 1
null is a literal, in the same sense that false, 10, and '\n' are literals. It's not a "keyword", technically, but it is a character string that is treated specially by the compiler if the compiler encounters it in a java source file.
So, no, you cannot name a variable "null". The lexical analyzer will decide that it is not an identifier.

- 3,355
- 1
- 22
- 17
true and false are also literals. Java trivia: const and goto are keywords.

- 525,659
- 79
- 751
- 1,130
It represents a special value but it's not a keyword in Java, and it doesn't mean that we can use it as an identifier. It's restricted to be used as an identifier and that is obvious because we cannot have a special value as an identifier because the compiler will treat that word (null) as special value, not as identifier.

- 9,564
- 146
- 81
- 122

- 45
- 1
- 5