Java, comme la plupart des langages, mais contrairement à quelques uns (comme CAML ou Maple), ne dispose pas d'un type primitif représentant des entiers de taille quelconque, mais de quatre types entiers de taille fixe : byte (un octet), short (deux octets), int (quatre octets), long (huit octets), le plus courant étant int . Ce sont tous des types d'entiers signés (c'est-à-dire positifs ou négatifs).
Quand un type entier est codé sur N bits, 2N entiers peuvent être représentés. Pour des types non-signés, on peut ainsi représenter l'intervalle [0, 2N-1] ; la suite de bits représente l'entier . Pour des types signés, les entiers dans l'intervalle [-2N-1, 2N-1-1] sont représentables ; les entiers sont représentés de la même façon que dans le cas non-signé et l'on a bN-1 = 0 ; les entiers <0 sont représentés en complément à deux et l'on a bN-1 = 1; cela signifie que représente l'entier ; par exemple 111..12 représente -1.
La notation décimale peut être utilisée pour noter les valeurs de type int ; un L (ou un l, moins lisible) doit être suffixé pour représenter une valeur de type long : 12 est un int, et 12L est un long.
À chacun des types primitifs byte, short, int et long est associée une classe enveloppante , respectivement Byte , Short, Integer et Long , qui contiennent des constantes et fonctions très utiles. Les entiers représentés par le type int forment l'intervalle
Integer.MIN_VALUE
, Integer.MAX_VALUE
].
Integer.MAX_VALUE
, est de
l'ordre de
.
Les opérations sont réalisées modulo 2N,
et aucun test de débordement n'est fait à l'exécution. Il ne faut pas
s'étonner de voir des résultats négatifs en cas de débordement ; par
exemple l'évaluation de la constante Integer.MAX_VALUE
+
1 donnera la valeur de Integer.MIN_VALUE
.
La conversion d'un type primitif vers son type enveloppant se fait à l'aide d'un constructeur :
Integer i = new Integer(3);
Inversement, des méthodes byteValue(), shortValue(), intValue() et longValue() permettent d'en extraire la valeur primitive :
int n = i.intValue(); // n = 3
D'autre part, une chaîne de caractères (provenant par exemple d'une lecture sur l'entrée standard) peut être convertie en entier de la façon suivante :
String s = "12"; int m = Integer.parseInt(s); // m = 12
L'API Java offre la classe java.math.BigInteger représentant les entiers de taille arbitraire.