Types Primitifs
En Java, les types de données sont divisés en deux grandes familles :
- 🧱 Les types primitifs (8 types)
- 🧩 Les types références (classes comme
String,Scanner, etc.)
Les types primitifs sont les briques de base de tout programme Java. Ils permettent de représenter les informations simples : nombres, caractères, booléens.
🎁 Pourquoi différents types de “boîtes” ?
En Java (et dans la plupart des langages), il existe plusieurs types de variables — ou “boîtes” — pour deux raisons principales :
🧬 1. L’encodage est différent selon le contenu
Un nombre entier (int, long, etc.) et un nombre à virgule (float, double) sont encodés différemment en mémoire.
- Par exemple, un
intne peut pas stocker de virgule, car son encodage ne prévoit que des nombres entiers. - Un
floatou undouble, eux, utilisent un encodage spécial (norme IEEE 754) pour stocker les parties entière et décimale.
👉 Tu ne peux donc pas mettre un nombre à virgule dans une boîte faite pour des entiers — ça reviendrait à mettre de la soupe dans une boîte avec des trous : ça ne marche pas 😄.
📦 2. La taille de la boîte varie selon les besoins
Chaque type occupe une taille différente en mémoire (1, 2, 4 ou 8 octets). C’est important car :
- Plus la boîte est grosse, plus elle prend de place 🏋️♂️
- Plus elle est petite, plus tu peux en stocker dans la mémoire 🪶
💡 Un exemple simple
Imaginons que tu disposes de 128 bits de mémoire.
Voici quelques façons de les remplir :
| Combinaison | Total utilisé |
|---|---|
2 long (2 × 64 bits) | 128 bits |
1 long (64) + 2 int (2 × 32) | 128 bits |
3 int (3 × 32) + 1 short (16) + 16 boolean (16 × 1) | 128 bits |
Tu choisis donc le type selon :
- 🧠 Ce que tu veux représenter
- 💾 Et l’espace mémoire que tu veux ou peux utiliser
Nombres entiers :
byte,short,int,long
Nombres à virgule flottante (Des approximations des Réels ou chiffres à virgules) :
float,double
Caractères :
char(représente un caractère Unicode sur 16 bits)
Booléens :
boolean(valeurstrueoufalse)
🧮 1. Les nombres entiers
Ils servent à stocker des valeurs sans virgule, positives ou négatives. Chaque type utilise un certain nombre d’octets et a une plage de valeurs définie :
| Type | Taille (bits / octets) | Valeur minimale | Valeur maximale | Exemple |
|---|---|---|---|---|
byte | 8 bits (1 octet) | -128 | 127 | byte b = 10; |
short | 16 bits (2 octets) | -32 768 | 32 767 | short s = 1000; |
int | 32 bits (4 octets) | -2 147 483 648 | 2 147 483 647 | int i = 42; |
long | 64 bits (8 octets) | -9 223 372 036 854 775 808 | 9 223 372 036 854 775 807 | long l = 100L; |
🧠 Il existe des constantes utiles comme Integer.MAX_VALUE ou Long.MIN_VALUE pour obtenir ces limites sans les retenir.
➕ Exemples de codage (positifs) :
| Décimal | Binaire (16 bits) | Hexadécimal |
|---|---|---|
| 1 | 00000000 00000001 | 0001 |
| 2 | 00000000 00000010 | 0002 |
| 127 | 00000000 01111111 | 007F |
| 255 | 00000000 11111111 | 00FF |
🌊 2. Les nombres à virgule (flottants)
Ils permettent de représenter des valeurs décimales (≈ des réels), avec une approximation en base 2.
| Type | Taille (bits / octets) | Précision | Valeur min / max | Exemple |
|---|---|---|---|---|
float | 32 bits (4 octets) | ~7 chiffres significatifs | ±1.4×10⁻⁴⁵ → ±3.4×10³⁸ | float f = 3.14f; |
double | 64 bits (8 octets) | ~15-16 chiffres significatifs | ±4.9×10⁻³²⁴ → ±1.8×10³⁰⁸ | double d = 2.718; |
💡 En Java, les littéraux décimaux sont des double par défaut. Pour un float, on ajoute un f à la fin.
🔤 3. Le caractère
Le type char représente un seul caractère Unicode (lettre, symbole, emoji, etc.) :
| Type | Taille (bits) | Plage Unicode | Exemple |
|---|---|---|---|
char | 16 bits | 0 à 65 535 (U+0000 à U+FFFF) | char c = 'A'; |
🎨 Les caractères sont entourés de quotes simples ('A') et peuvent contenir aussi des caractères spéciaux ou emojis :
char emoji = '💡';
char lettre = 'f';🔘 4. Le booléen
Un boolean est un type logique qui représente vrai ou faux, souvent utilisé dans les conditions :
| Type | Valeurs possibles | Exemple |
|---|---|---|
boolean | true ou false | boolean actif = false; |
💬 Très utile pour représenter des états binaires : activé/désactivé, visible/caché, connecté/non connecté…
boolean estPret = true;
boolean estFini = false;✨ Récap visuel
| Catégorie | Types | Rôle principal |
|---|---|---|
| 🧮 Entiers | byte, short, int, long | Stocker des nombres sans virgule |
| 🌊 Flottants | float, double | Représenter des valeurs décimales |
| 🔤 Caractères | char | Représenter un caractère Unicode |
| 🔘 Booléens | boolean | Représenter une valeur vraie ou fausse |
🎯 Exercice 1
🔧 Consigne :
Créer et afficher les variables avec le meilleur type possible
Variable contenant l’âge d’une personne (moins de 123)
Population du cégep Marie-Victorin (Environ 7 500)
Variable comptant la population au Qc (Environ 9 millions)
Variable pour calculer le revenu d’un individu normal
Nombre de gouttes d’eau dans une piscine (environ 960 000 000 gouttes).
Une variable qui se rappelle si le prof était bon ou pas (true?)
Note en lettre qu’un étudiant obtient au cours (A)
📝 Exemple attendu à l’écran :
32
7512
8905430
45000.25
960540388
true
ARéponse
byte age = 32;short populationMV = 7512;int populationQC = 8_905_430;float revenu = 45000.25f;int nbGoutteEau = 960_540_388 //Un argument pourrait être fait pour utiliser un long en suggérant que la piscine pourrait possiblement être beaucoup plus grande et un long pourrait être plus sécuritaire.boolean leProfEstBon = true;char noteEleve = 'A';
🎯 Exercice 2
🔧 Consigne :
Créer et afficher les variables avec le meilleur type possible
Âge d’un chat domestique (environ 8 ans)
Nombre d’étudiants dans une petite école secondaire (environ 420)
Nombre d’habitants à Montréal (environ 1.7 million)
Salaire annuel d’un développeur junior (~52 000.75 $)
Nombre de grains de sable dans un seau (~25 000 000)
Une variable indiquant si une lumière est allumée (
false)La lettre de la section d’un cours (par exemple
B)
📝 Exemple attendu à l’écran :
8
420
1700000
52000.75
25000000
false
BRéponse
byte ageChat = 8;short nbElevesEcole = 420;int populationMontreal = 1_700_000;float salaireAnnuel = 52000.75f;int nbGrainsSable = 25_000_000;boolean lumiereAllumee = false;char sectionCours = 'B';
🎯 Exercice 3
🔧 Consigne :
Créer et afficher les variables avec le meilleur type primitif possible, dans l’ordre ci-dessous :
- Une lettre qui représente une réponse à un quiz (par exemple
C) - Est-ce que l’alarme est activée (
true) ? - Le nombre d’habitants dans un petit village (environ 1 200)
- Âge d’un enfant (environ 5 ans)
- Le revenu annuel d’un dentiste (~98 500.95 $)
- Le nombre d’étoiles visibles à l’œil nu (~6 000)
- Estimation du nombre de cellules dans un corps humain (environ 37 000 000 000 000)
📝 Exemple attendu à l’écran :
C
true
1200
5
98500.95
6000
37000000000000Réponse
char reponseQuiz = 'C';boolean alarmeActivee = true;short populationVillage = 1200;byte ageEnfant = 5;float revenuDentiste = 98500.95f;short nbEtoilesVisibles = 6000;long nbCellulesHumain = 37_000_000_000_000L;
