# Integers

Integers are whole numbers, for example, -35, 0, 2048, .... Integers are represented in binary inside the computer, and in decimal in Java source programs. Java automatically converts decimal numbers you write in your source program into binary numbers internally.

## Four (or five) kinds of primtive integers and two integer classes.

Primitive types. The are four types of integers in Java: `byte`, `short`, `int`, `long`. The most common is int. All integers are stored in signed, two's-complement, format.

char! Technically, `char` is an unsigned integer type altho it is almost exclusively used to store characters. Making it integer is largely because of Java's legacy from C++. Don't use `char` for integers unless you are sure of what you're doing.

Classes. In addition to the primitive types, there are two classes used for integers.

• Integer - Primarily useful for utility methods and to put in the Collections data structure classes.
• BigInteger - Used where unbounded arithmetic is important.

## How Java stores integers in memory

Java stores all integers in memory as binary numbers.

 type Size Range name bytes bits minimum maximum byte 1 8 -128 +127 short 2 16 -32,768 +32,767 int 4 32 -2,147,483,648 +2,147,483,647 long 8 64 -9,223,372,036,854,775,808 +9,223,372,036,854,775,807

## How to write integer literals

Here is how to write decimal integer literals (constants).

• `int` literals are written in the usual decimal notation, like 34 or -222.
• `long` literals are written by adding an L (or lowercase l altho this is almost impossible to distinguish from the digit 1), eg, 34L or -222L.
• There is no way to write a literal `byte` or `short`, altho sometimes Java will automatically cast an int literal to the appropriate type.

```   int i;
Operations may produce numbers which are too large (overflow) to be stored in an `int`. No error is caused in this case; the result is simply an incorrect number (one of the shames of modern computer arithmetic). Division by zero will cause an execution exception (ArithmeticException). Use BigInteger to prevent arithmetic overflow.