· Characters This group includes char, which represents symbols in a character set,
like letters and numbers.
· Boolean This group includes boolean, which is a special type for representing
You can use these types as-is, or to construct arrays or your own class types. Thus, they
form the basis for all other types of data that you can create.
The primitive types represent single values--not complex objects. Although Java is
otherwise completely object-oriented, the primitive types are not. They are analogous to
the simple types found in most other nonobject-oriented languages. The reason for this is
efficiency. Making the primitive types into objects would have degraded performance too much.
The primitive types are defined to have an explicit range and mathematical behavior.
Languages such as C and C++ allow the size of an integer to vary based upon the dictates
of the execution environment. However, Java is different. Because of Java's portability
requirement, all data types have a strictly defined range. For example, an int is always 32 bits,
regardless of the particular platform. This allows programs to be written that are guaranteed
to run without porting on any machine architecture. While strictly specifying the size of an
integer may cause a small loss of performance in some environments, it is necessary in order
to achieve portability.
Let's look at each type of data in turn.
Java defines four integer types: byte, short, int, and long. All of these are signed, positive
and negative values. Java does not support unsigned, positive-only integers. Many other
computer languages support both signed and unsigned integers. However, Java's designers
felt that unsigned integers were unnecessary. Specifically, they felt that the concept of unsigned
was used mostly to specify the behavior of the high-order bit, which defines the sign of an integer
value. As you will see in Chapter 4, Java manages the meaning of the high-order bit differently,
by adding a special "unsigned right shift" operator. Thus, the need for an unsigned integer type
The width of an integer type should not be thought of as the amount of storage it consumes,
but rather as the behavior it defines for variables and expressions of that type. The Java run-time
environment is free to use whatever size it wants, as long as the types behave as you declared
them. The width and ranges of these integer types vary widely, as shown in this table:
9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
2,147,483,648 to 2,147,483,647
32,768 to 32,767
128 to 127
Let's look at each type of integer.
Search WWH :