Numeric Data
Input streams read bytes and output streams write bytes. Readers read characters and writers write characters. Therefore, to understand input and output, you first need a solid understanding of how Java deals with bytes, integers, characters, and other primitive data types, and when and why one is converted into another. In many cases Java’s behavior is not obvious.
Integer Data
The fundamental integer
data type in Java is the
int
, a four-byte, big-endian, two’s
complement integer. An int can take on all values
between -2,147,483,648 and 2,147,483,647. When you type a literal
integer like 7, -8345, or 3000000000 in Java source code, the
compiler treats that literal as an int. In the
case of 3000000000 or similar numbers too large to fit in an
int, the compiler emits an error message citing
“Numeric overflow.”
longs
are eight-byte, big-endian, two’s complement integers with
ranges from -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807.
long literals are indicated by suffixing the
number with a lower- or uppercase L. An
uppercase L is preferred because the lowercase
l is too easily confused with the numeral 1 in
most fonts. For example, 7L, -8345L, and 3000000000L are all 64-bit
long literals.
There are two more integer data types available in Java, the
short
and the
byte
.
shorts are two-byte, big-endian, two’s
complement integers with ranges from -32,768 to 32,767. They’re
rarely used in Java and are included mainly for compatibility with C.
bytes, however, are ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access