J. W. Rider
21 February 2005

Java Reserved Identifiers

A Java identifier is a sequence of Java letters and digits, the first of which must be a letter. Programmer-defined identifiers cannot have the same spelling as identifiers that are reserved. Reserved identifiers include keywords, two Boolean literals, and the null literal.

Identifier spelling is case-sensitive.

The following character sequences are reserved and cannot be used as programmer-defined identifiers:

abstract
assert
boolean
break
byte
case
catch
char
class
const
continue
default
do
double
else
enum
extends
false
final
finally
float
for
goto
if
implements
import
instanceof
int
interface
long
native
new
null
package
private
protected
public
return
short
static
strictfp
super
switch
synchronized
this
throw
throws
transient
true
try
void
volatile
while

The keywords const and goto are reserved by Java, even though they are not currently used in Java. This may allow a Java compiler to produce better error messages if these C++ keywords incorrectly appear in Java programs.

P>The following table lists and annotates all of the Java reserved identifiers. Reserved identifiers cannot be used in any other way within Java programs. In particular, you cannot use any of these reserved identifiers as your own identifiers in Java programs.

Identifier

Context

Description

abstract

class modifier

abstract class MyAbstractClass { members; }

For classes: The class cannot be instantiated directly; that is, you may not "new MyAbstractClass()". Subclasses of an abstract class must provide bodies in overridden methods to be capable of being instantiated.

Abstract classes generally have at least one abstract method. However, this is not a requirement. Abstract classes may have a mix of both abstract and concrete methods, or they may have all concrete methods.

method modifier

abstract void aProcedure();

For methods: There is no body associated with the method, only a semicolon marks the end of the method declaration.

Classes that contain abstract methods must themselves be abstract. However, abstract classes need not have any abstract methods.

assert

run-time debugging check

boolean

primitive type

boolean trueOrFalse;

Boolean variables can only be assigned the values true or false.

break

control statement (found in iteration or switch statements)

  • break;

Always ends the innermost control structure in which the break statement is embedded. Iteration statements do not test to see if they should execute another cycle.

 

 

  • break label;
 

Labeled break statements end all nested control structures out to the iteration or switch statement with the same label.

byte

primitive type

byte tensOfThings;

Byte variables can be assigned 8-bit integer values between –128 and 127.

case

switch statement clause

case CASEVALUE: statements; break;

Within a switch statement, execution is suspended until a case value that matches the switch expression is found.

catch

try statement clause (handles exceptions)

try { statements; }

catch (MyException e) { statements; }

 

The catch statement can only be used in conjunction with a try statement. When an exception is thrown in the try block of a try statement, program execution continues in a catch block which matches the exception thrown. Catch blocks handle any exceptions thrown by code within a try block.

char

primitive type

char aVowel;

Char variables can be assigned 16-bit Unicode characters.

class

class declaration

  • class MyClass { members; }
  • class MyClass extends MySuperClass implements FirstInterface, SecondInterface { members; }
 

The class is the basic building module of Java. It creates a generic description (or template, or blueprint) of one are more objects, the instances of the class. The class body lists the members of the class: the fields (or variables, or attributes), the methods (or functions), or local class/interface declarations.

const

unused

Use final to indicate fields that are not changed after initialization.

continue

statement (found in iteration statements)

  • continue;
  • continue looplabel;

The continue statement returns to the beginning of an embedded loop, at which time the loop tests itself whether to execute the body again or exit. The unlabeled continue goes to the beginning of the innermost nested loop. The labeled continue goes to the beginning of the iteration statement with that label.

default

switch statement clause

default: statements;

 

If none of the case clauses in a switch statement match the switch expression, execution of statements within the switch block begins at the "default case" or "default label".

do

iteration statement

do statements; while (test);

 

Executes a sequence of statements while the while condition is true. The iterated statements are executed at least once.

double

primitive type

double astronomicalQuantity;

Double variables can be assigned 64-bit double-precision floating-point values. The largest possible double value is 1.79769313486231570e+308.

else

if statement clause

if (test) statement1;

else statement2;

 

The else keyword is used only in conjunction with an if statement. The statement or block that follows the else is executed when the if test evaluates to false.

enum

programmer-defined type

extends

class/interface declaration clause

  • class MySubClass extends MySuperClass { members; }
  • interface SecondInterface extends FirstInterface { members; }
 

If a class does not explicitly extend a superclass, the class is taken to be a subclass of the class Object (as if you had written, "extends Object").

false

boolean literal

boolean allAnimalsAreDogs = false;

final

class modifier

  • final class NeverSuper { members; }
 

declares a class that can never be extended.

method modifier

  • final void aProcedure() { statements; }
 

declares a method that can never be overridden in a subclass.

field modifier

  • final int LIMIT = 100;
declares a constant. 

finally

try statement clause

try { statements; }

finally { statements; }

 

The finally block is executed whether or not an exception was thrown in a try block. It is not possible to determine within the finally block whether or not an exception was thrown within the try block.

float

primitive type

float aFloat;

Float variables can be assigned 32-bit single-precision IEEE floating point values. The largest possible float value is 3.40282347e+38f (note the "f").

for

iteration statement

for ( initialize; test; update ) statement;


Executes a statement (or block) repeatedly while a test condition is true.

goto

unused

Only break, continue, return and throw are permitted to disrupt structured flow.

if

selection statement

if (test) statement;

Creates an optional execution path. The statement or block is executed only if test evaluates to true.

if (test) statement1;

else statement2;

Creates an alternative execution
path.   Statement1 is executed if test evaluates to true.
Otherwise, statement2 is executed.

implements

class declaration clause

  • class MyClass implements MyInterface { members; }

If a class implements an interface, it guarantees to define all the methods specified in the interface. This is analogous to the class extending the interface and overriding its methods.

 

  • class MyClass implements FirstInterface, SecondInterface { members; }

A class may implement more than one interface, in which case the interfaces are separated by commas in the class declaration:

import

statement


    import package.class; import package.*;

Lets you access classes and interfaces that have already been created, especially the Java standard classes.

instanceof

operator

if (anObject instanceof MyClass) statement;

Determines whether the left-hand argument is an instance of a named class or interface or an instance of a subclass of the named class/interface. Evaluates to true or false.

int

primitive type

int hundredsOfMillionsOfThings;

Int variables may be assigned 32-bit integer values. The largest possible int value is 2147483647, about two billion.

interface

interface declaration

interface MyInterface { members; }

A specification of the methods which a class must in order to implement the interface.

long

primitive type

long billionsOfBillionsOfThings;

Long variables may be assigned 64-bit integer values. The largest possible long value is 9223372036854775807L (note the "L" suffix), about nine billion, billion.

native

method modifier

native void aProcedure();

Identifies methods that have bodies implemented outside of a Java class.

new

operator

  • MyClass variable=new MyClass();
  • Creates a new instance of a class.

     

    • MyInterface variable=new MyInterface(){ members; };

    Creates an instance of an anonymous class that is assignment compatible with the named class/interface reference variables.

    • int[] anArray= new int[5];

    Allocates memory for an array.

     

    There is no free, delete nor destructor mechanism within the Java language. Objects become subject to garbage collection when they are no longer referenced anywhere. All instances of a class do have a predefined (but not reserved) method, finalizer(), that is called prior to garbage collection, but there is no mechanism for forcing destruction.

    null

    reference literal

    MyClass variable=null;

    Null is the reference value that does not indicate an object. The null value is assignment compatible with all reference variables.

    package

    statement

    package mypackage;

    Declares the classes defined within a Java source file as parts of a named package. Packages are used by other source files through the import statement.

    private

    member scope modifier

    private int aField;

    Private members may only be referenced within the class in which they are declared.

    protected

    member scope modifier

    protected void aProcedure();

    Protected members may be referenced within the class in which they are declared, classes in the same package, or subclasses.

    public

    class/interface scope modifier

    • public class MyClass { members; }
    • public interface MyInterface { members; }

    Public classes and interfaces may be referenced outside the package in which they are declared.

    member scope modifier

    • public int getField(){ statements; }

    Public members of public classes may be referenced outside the package in which the class is declared.

    return

    control statement

    • return;

    Exits from a void method. This statement is optional in a void method. If not present, the void method still exits when it reaches the end of the method body.

     

    • return expression;

    Exits a method that returns a value.

    short

    primitive type

    short thousandsOfThings;

    Short variables may be assigned 16 bit integer values.

    static

    member modifier

    Associates members with the class and not with the individual instances.

    • static int numberOfInstances;

    Static variables are 'shared' between all the instances of a class (as opposed to 'instance variables', for which each instance has an independant value).

     

     

    • static void aStaticProcedure(){ members; }

    Static methods may not refer to instance variables (only to static variables), and may be invoked using the class name, rather than on an instance of the class. ("MyClass.aStaticProcedure()")

    strictfp

    class/interface/member modifier (added in Java 2)

    strictfp double accountBalance;

    Ensures that floating point values are normalized during calculations rather than just when assigned to floating point variables.

    super

    class reference

    • super();

    Invokes the constructor of the parent class from the constructor of a subclass. Must be the first executable statement within a constructor.

     

    • super.method()

    Invokes a method of the parent class that may have been overridden in a subclass.

    switch

    selection statement

    switch( expression)

    {

    cases; // see case

    optional_default_case; // see default

    }

    Provides multiple entries into a sequence of statements. The switch expression (char or integer) is evaluated, and the statement following the case label that matches the value is executed. Subsequent statements are executed, even if they follow other case labels. The sequence of statements continues to be executed until break, continue or return is executed, or if an unhandled exception is thrown.

    If no case matches the expression value, statements following the default label are executed.

    synchronized

    method modifier

    • synchronized void aProcedure()

    { statements; }

    The synchronized methods of a class can only be executed by a single thread. Threads invoking a synchronized method in a class when another thread is executing a synchronized method will be suspended until the thread that acquired the "lock" on the class releases the lock.

    statement

    • synchronized (reference)

    statement;

    A thread will wait until a lock is acquired on the reference before executing the statement. A lock can only be acquired for any given object by a single thread at a time.

    this

    reference variable

    aComponent.addListener(this);

    A predefined reference variable defined for all non-static methods in a class. It provides a reference to the object whose method was called.

    throw

    statement (exceptions)

    throw new Exception();

    Interrupts the current sequence of statements being executed, and all parent structures and methods out to the innermost try statement.

    throws

    method header clause (exceptions)

    void aProcedure() throws Exception

    { statements; }

    Identifies a procedure that either throws an exception directly, or does not handle the exception when it calls another method that throws the exception.

    transient

    field modifier

    transient int temporary;

    Ostensibly, transient identifies fields that are not "persistent" when the object is saved or "serialized". However, there is nothing in Java that takes advantage of this feature.

    true

    boolean literal

    boolean allDogsAreAnimals = true;

    try

    statement (exceptions)

    try { statements; }

    catch (IOException e) { statements; }

    catch (Exception e) { statements; }

    finally { statements; }

    Defines a section that could throw exceptions.

    The statements in the try block are executed in sequence. If an exception occurs, and the exception class matches the type of the catch variable, then the statements in the catch block are executed, and the exception is deemed "handled". Regardless of whether or not an exception occurs, and whether it is handled or not, the statements in the finally block are executed.

    void

    method return type substitute

    void aProcedure() { statements; }

    Identifies a method that does not return a value.

    volatile

    field modifier (threads)

    volatile int threadFlag;

    Identifies fields that must be reevaluated at every reference. Most programmers prefer just to use synchronized.

    while

    iteration statement

    while (test) statement;

    Executes a statement or block repeatedly until a test condition is true. If the test condition evaluates to false initially, the statement is not executed.

    1