« Salut, Amigo ! »

« Bonjour, Rishi ! »

« Tu as déjà maîtrisé les bases de la syntaxe Java, alors je vais maintenant te donner plus de détails. »

« Aujourd'hui, nous allons parler des types primitifs et de la place qu'ils occupent en mémoire. Ces connaissances te seront utiles, peut-être même dès aujourd'hui. Voici les types de base : »

Type Taille,
en octets
Plage de valeurs Valeur par défaut Description
byte 1 -128 .. 127 0 Le plus petit entier, 1 octet
short 2 -32,768 .. 32.767 0 Entier court, 2 octets
int 4 -2*109 .. 2*109 0 Entier, 4 octets
long 8 -9*1018 .. 9*1018 0L Entier long, 8 octets
float 4 -10127 .. 10127 0.0f Nombre fractionnaire, 4 octets
double 8 -101023 .. 101023 0.0d Nombre fractionnaire de deux fois la taille d'un float, 8 octets
boolean 1 true, false false Type booléen (seulement true ou false)
char 2 0..65,535 '\u0000' Caractères, 2 octets, valeurs non signées
Object 4 Toute référence ou null. null Stocke des références à des instances d'Object ou de classes héritant d'Object

« Je vais te parler un peu plus de chaque type. »

« Le type byte est le plus petit type d'entier. Les variables de ce type n'occupent que 1 octet en mémoire. Un octet peut stocker des valeurs dans la plage de -128 à 127. »

« Pourquoi avons-nous besoin d'un type aussi petit ? On ne pourrait pas toujours utiliser int ? »

« On pourrait. Mais si tu crées de grands tableaux dont les éléments n'auront jamais besoin de stocker des valeurs supérieures à 100, pourquoi ne pas utiliser ce type ? Tu saisis la logique ? »

« Un short a deux fois la longueur d'un octet, et lui aussi ne stocke que des entiers. Le plus grand nombre positif qu'il peut stocker est 32 767. Le plus grand nombre négatif qu'il peut stocker est -32 768. »

« Tu connais déjà bien le type int. Il stocke des nombres entiers dans la plage de ±2 000 000 000. »

« Le type  float a été créé pour stocker des nombres réels (fractionnaires). Sa taille est de 4 octets. »

« Les nombres fractionnaires sont stockés de façon assez intéressante. »

« Par exemple, le nombre 987654,321 peut être représenté sous la forme 0,987654321*106. Cela veut dire qu'il peut être représenté par deux nombres en mémoire : 0.987654321 (mantisse, ou chiffre significatif) et 6 (exposant en base 10). »

« Pourquoi on en a besoin ? »

« Cette approche nous permet d'utiliser 4 octets pour stocker des nombres bien plus grands que ce qu'un int peut stocker. Pour cela, nous devons sacrifier la précision. Seule une portion de ces octets est utilisée pour stocker la mantisse, ce qui signifie que ces nombres ne peuvent stocker que 6 à 7 décimales. Les décimales moins significatives sont perdues. »

« On parle également de nombres à virgule flottante. C'est de là que le type float tire son nom. »

« Je vois. »

« Le type double est semblable à float, mais deux fois plus long (d'où le nom), et occupe 8 octets. Il peut contenir une mantisse plus grande et plus de chiffres significatifs. Si tu as besoin de stocker des nombres réels, essaie toujours d'utiliser ce type. »

"char est un type hybride. Ses valeurs peuvent être interprétées aussi bien comme des nombres (qui peuvent être additionnés et soustraits) que comme des caractères. C'est possible, car même si les caractères ont une représentation visuelle, l'ordinateur les voit essentiellement comme des nombres. Et il est plus pratique de les traiter comme des nombres. Encore une chose : le type char est toujours positif. Il ne peut pas contenir de valeurs négatives. »

« Le type boolean est un type logique qui ne peut stocker que deux valeurs : true ou false (vrai ou faux, respectivement). »

« Malgré sa présence dans ce tableau, le type Object n'est pas un type primitif. C'est la classe de base pour toutes les classes en Java. Tout d'abord, toutes les classes en dérivent et contiennent ainsi ses méthodes. Deuxièmement, une variable Object peut stocker des références à des objets de tout type, y compris null (une référence null). »

« J'ai beaucoup appris aujourd'hui. Merci pour cette leçon, Rishi. »