Java Reference
In-Depth Information
When a
switch
statement is executed, one of a number of different branches is exe-
cuted. The choice of which branch to execute is determined by a
controlling expres-
sion
given in parentheses after the keyword
switch
. Following this are a number of
occurrences of the reserved word
case
followed by a constant and a colon. These
constants are called
case labels
. The controlling expression for a
switch
statement
must be one of the types
char
,
int
,
short
, or
byte
.
1
The case labels must all be of the
same type as the controlling expression. No case label can occur more than once,
because that would be an ambiguous instruction. There may also be a section labeled
default:
, which is usually last.
When the
switch
statement is executed, the controlling expression is evaluated and
the computer looks at the case labels. If it finds a case label that equals the value of the
controlling expression, it executes the code for that case label.
The
switch
statement ends when either a
break
statement is executed or the end of the
switch
statement is reached. A
break
statement
consists of the keyword
break
followed
by a semicolon. When the computer executes the statements after a case label, it continues
until it reaches a
break
statement. When the computer encounters a
break
statement, the
switch
statement ends. If you omit the
break
statements, then after executing the code for
one case, the computer will go on to execute the code for the next case.
Note that you can have two case labels for the same section of code, as in the fol-
lowing portion of a
switch
statement:
controlling
expression
case labels
break
statement
case
'A':
case
'a':
System.out.println("Excellent. You need not take the final.");
break
;
Because the first case has no
break
statement (in fact, no statements at all), the effect is
the same as having two labels for one case, but Java syntax requires one keyword case
for each label, such as
'A'
and
'a'
.
If no case label has a constant that matches the value of the controlling expression,
then the statements following the
default
label are executed. You need not have a
default
section. If there is no
default
section and no match is found for the value of
the controlling expression, then nothing happens when the
switch
statement is exe-
cuted. However, it is safest to always have a
default
section. If you think your case
labels list all possible outcomes, you can put an error message in the
default
section.
The default case need not be the last case in a
switch
statement, but making it the
last case, as we have always done, makes the code clearer.
A sample
switch
statement is shown in Display 3.2. Notice that the case labels do
not need to be listed in order and need not span a complete interval.
default
1
As we will see in Chapter 6, the type may also be an enumerated type, but we do not cover enumer-
ated types until Chapter 6.