This Cheat Sheet tells you all about Java's categories of words.
Java's 51 keywords
The Java programming language has 50 keywords. Each keyword has a specific meaning in the language. You can’t use a keyword for anything other than its pre-assigned meaning.
The following table lists Java’s keywords.
Keyword | What It Does |
abstract | Indicates that the details of a class, a method, or an interface are given elsewhere in the code. |
assert | Tests the truth of a condition that the programmer believes is true. |
boolean | Indicates that a value is either true or false. |
break | Jumps out of a loop or switch. |
byte | Indicates that a value is an 8-bit whole number. |
case | Introduces one of several possible paths of execution in a switch statement. |
catch | Introduces statements that are executed when something interrupts the flow of execution in a try clause. |
char | Indicates that a value is a character (a single letter, digit, punctuation symbol, and so on) stored in 16 bits of memory. |
class | Introduces a class — a blueprint for an object. |
const | You can’t use this word in a Java program. The word has no meaning but, because it’s a keyword, you can’t create a variable named const. |
continue | Forces the abrupt end of the current loop iteration and begins another iteration. |
default | Introduces a path of execution to take when no case is a match in a switch statement. |
do | Causes the computer to repeat some statements over and over again (for instance, as long as the computer keeps getting unacceptable results). |
double | Indicates that a value is a 64-bit number with one or more digits after the decimal point. |
else | Introduces statements that are executed when the condition in an if statement isn’t true. |
enum | Creates a newly defined type — a group of values that a variable can have. |
extends | Creates a subclass @@md a class that reuses functionality from a previously defined class. |
final | Indicates that a variable’s value cannot be changed, that a class’s functionality cannot be extended, or that a method cannot be overridden. |
finally | Introduces the last will and testament of the statements in a try clause. |
float | Indicates that a value is a 32-bit number with one or more digits after the decimal point. |
for | Gets the computer to repeat some statements over and over again (for instance, a certain number of times). |
goto | You can’t use this word in a Java program. The word has no meaning. Because it’s a keyword, you can’t create a variable named goto. |
if | Tests to see whether a condition is true. If it’s true, the computer executes certain statements; otherwise, the computer executes other statements. |
implements | Indicates that a class provides bodies for methods whose headers are declared in an interface. |
import | Enables the programmer to abbreviate the names of classes defined in a package. |
instanceof | Tests to see whether a certain object comes from a certain class. |
int | Indicates that a value is a 32-bit whole number. |
interface | Introduces an interface. An interface is like a class but, for the most part, an interface’s methods have no bodies. |
long | Indicates that a value is a 64-bit whole number. |
native | Enables the programmer to use code that was written in a language other than Java. |
new | Creates an object from an existing class. |
package | Puts the code into a package — a collection of logically related definitions. |
private | Indicates that a variable or method can be used only within a certain class. |
protected | Indicates that a variable or method can be used in subclasses from another package. |
public | Indicates that a variable, class, or method can be used by any other Java code. |
return | Ends execution of a method and possibly returns a value to the calling code. |
short | Indicates that a value is a 16-bit whole number. |
static | Indicates that a variable or method belongs to a class, rather than to any object created from the class. |
strictfp | Limits the computer’s ability to represent extra large or extra small numbers when the computer does intermediate calculations on float and double values. |
super | Refers to the superclass of the code in which the word super appears. |
switch | Tells the computer to follow one of many possible paths of execution (one of many possible cases), depending on the value of an expression. |
synchronized | Keeps two threads from interfering with one another. |
this | A self-reference — refers to the object in which the word this appears. |
throw | Creates a new exception object and indicates that an exceptional situation (usually something unwanted) has occurred. |
throws | Indicates that a method or constructor may pass the buck when an exception is thrown. |
transient | Indicates that, if and when an object is serialized, a variable’s value doesn’t need to be stored. |
try | Introduces statements that are watched (during runtime) for things that can go wrong. |
void | Indicates that a method doesn’t return a value. |
volatile | Imposes strict rules on the use of a variable by more than one thread at a time. |
while | Repeats some statements over and over again (as long as a condition is still true). |
_ (a single underscore) | You can’t use this word in a Java 17 program. The word might have a meaning in later versions of Java. Because it’s a keyword, you can’t create a variable named _. |
Java's literal words
In addition to its keywords, three of the words you use in a Java program are called literals. Each literal has a specific meaning in the language. You can’t use a literal for anything other than its pre-assigned meaning.
The following table lists Java’s literal words.
Literal | What It Does |
false | One of the two values that a boolean expression can possibly have. |
null | The “nothing” value. If you intend to have an expression refer to an object of some kind, but the expression doesn’t refer to any object, the expression’s value is null. |
true | One of the two values that a boolean expression can possibly have. |
The keywords and literal words are all called reserved words because each of these words is reserved for special use in the Java programming language.
Restricted keywords in Java
A restricted keyword has a specific meaning in the language, but only if you use that word in a specific way. For example, if you write
requires other.stuff;
you tell Java that your program won’t run unless it has access to some other code (the code contained in other.stuff
). But if you write
int requires = 10;
then requires
is an ordinary int
variable.
The following table lists the restricted keywords in Java 17.
Restricted Keyword | What It Does |
exports | Indicates that the code in a particular package is available for use by code in other modules. |
module | A bunch of packages. |
non-sealed | Removes the restriction that only certain other classes may extend this class. |
open | Indicates that all the packages in a module are, in a certain way, available for use by code in other modules. |
opens | Gets access to all the code in another module. This access uses Java reflection (which tends to be messy). |
permits | Names the classes that can extend a sealed class. |
provides | Indicates that a module makes a service available. |
record | Introduces a class with some commonly-used methods defined by default. |
requires | Indicates that the program won’t run unless it has access to some other code. |
sealed | Indicates that only certain other classes may extend this class. |
to | Names the code that has permission to use a particular piece of code. |
transitive | When my code requires use of the A code, and the Z code requires use of my code, the word transitive means that Z code automatically requires A code. |
uses | Indicates that a module uses a service. |
var | Leaves Java to infer a variable’s type. |
with | Specifies a particular way of using a service. |
yield | Marks the value of a case clause in a switch expression. |
Identifiers in the Java API
The Java application programming interface (API) has thousands of identifiers. Each identifier is the name of something (a class, an object, a method, or something like that). These identifiers include System, out, println, String, toString, JFrame, File, Scanner, next, nextInt, Exception, close, ArrayList, stream, JTextField, Math, Random, MenuItem, Month, parseInt, Query, Rectangle, Color, Oval, paint, Robot, SQLData, Stack, Queue, TimeZone, URL, and so many others.
You can reuse any of these names for any purpose in your code. But if you do, you might have trouble using a name with its normal meaning from the Java API. For example, you can write
int System = 7;
java.lang.System.out.println(System);
But you can’t write
int System = 7;
System.out.println(System);
Identifiers that you (the programmer) declare
In your own Java program, you can make up names to your heart’s delight. For example, in the code
double multiplyByTwo(double myValue) {
return myValue * 2;
}
the names multiplyByTwo
and myValue
are your very own identifiers.
When you create a new name, you can use letters, digits, underscores (_), and dollar signs ($). But don’t start the name with a digit. If you try to start a name with a digit, Java replies with a “Please don’t do that” message.