74 Part I: The Java Language
When Java evaluates this assignment expression, it first looks at the expression to theleftof
the question mark. Ifdenomequals zero, then the expressionbetweenthe question mark and
the colon is evaluated and used as the value of the entire?expression. Ifdenomdoes not
equal zero, then the expressionafterthe colon is evaluated and used for the value of the
entire?expression. The result produced by the?operator is then assigned toratio.
Here is a program that demonstrates the?operator. It uses it to obtain the absolute
value of a variable.
// Demonstrate ?.
class Ternary {
public static void main(String args[]) {
int i, k;
i = 10;
k = i < 0? -i : i; // get absolute value of i
System.out.print("Absolute value of ");
System.out.println(i + " is " + k);
i = -10;
k = i < 0? -i : i; // get absolute value of i
System.out.print("Absolute value of ");
System.out.println(i + " is " + k);
}
}
The output generated by the program is shown here:
Absolute value of 10 is 10
Absolute value of -10 is 10
Operator Precedence
Table 4-1 shows the order of precedence for Java operators, from highest to lowest. Notice
that the first row shows items that you may not normally think of as operators: parentheses,
square brackets, and the dot operator. Technically, these are calledseparators, but they act
like operators in an expression. Parentheses are used to alter the precedence of an operation.
As you know from the previous chapter, the square brackets provide array indexing. The dot
operator is used to dereference objects and will be discussed later in this book.
Using Parentheses
Parenthesesraise the precedence of the operations that are inside them. This is often necessary
to obtain the result you desire. For example, consider the following expression:
a >> b + 3
This expression first adds 3 toband then shiftsaright by that result. That is, this expression
can be rewritten using redundant parentheses like this:
a >> (b + 3)