b= ( byte ) (b + 1);
Prefix operator ( byte ) is called a cast . It casts or converts the type of the expres-
sion to type byte . Similarly, we can use the casts ( short ), ( int ), and ( long ).
Widening casts —casts that convert from a narrower type to a wider type—
are unnecessary because Java promotes values to a wider type when needed.
Narrowing casts —casts that convert from a wider type to a narrower type—
must always be written explicitly because Java will never automatically convert
to a narrower type because it may lose information.
Identity casts , like ( int )5 , are also possible, but there is no need for them.
Casts have higher precedence than binary operators
A cast like ( byte ) has higher precedence than operators like addition and
multiplication. For example, consider this assignment:
b= ( byte ) b + 1; // illegal
The assignment is equivalent to:
b= (( byte ) b) + 1; // illegal
Thus, the addition is an int addition and produces an int result, which can-
not be assigned to a byte , so the assignment is syntactically illegal. The assign-
ment statement should be written this way:
b= ( byte ) (b + 1); // legal
Floating-point types double and float
The values of type double are numbers that can have a fractional part, like -
.000045 and 35.4 . You can view these as the so-called “real numbers”, but you
cannot represent all real numbers exactly. For example, the number 1/3 =
.333333… has an infinite number of 3 's in it, so, because a double value occu-
pies a finite amount of space (eight bytes), the number 1/3 cannot be repre-
sented exactly in type double . Similarly the square root of 2 and pi , the ratio of
the circumference of a circle to its diameter, cannot be represented exactly in
type double . Type double serves only as an approximation of the real numbers.
We give you enough information so that you can write programs that use
type double . However, to really use the type well, you need to know more than
we can explain in this topic. A later course, perhaps in numerical analysis, will
explain all the nuances of type double .
6-3 and 6-4
Literals of type double
There are three forms of double literal: