next up previous contents index
Next: Types flottants Up: À-côtés Previous: À-côtés

      
Types entiers

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 $b_{N-1}\ldots b_{0}$représente l'entier $b_{N-1}2^{N-1} +\ldots + 2^1 b_{1} + b_{0}$. Pour des types signés, les entiers dans l'intervalle [-2N-1, 2N-1-1] sont représentables ; les entiers $\ge 0$ 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 $b_{N-1}\ldots b_{0}$ représente l'entier $-b_{N-1}2^{N-1} + b_{N-2}2^{N-2} +\ldots + 2^1 b_{1} +
b_{0}$ ; 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].
Il y a des constantes analogues pour les trois autres types entiers. Le plus grand entier du type int, Integer.MAX_VALUE, est de l'ordre de $2 \times 10^9$. 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.


next up previous contents index
Next: Types flottants Up: À-côtés Previous: À-côtés
R. Lalement
2000-10-23