1. Définitions des Types Primitifs
En Java, un type primitif est prédéfini par le langage et nommé par un mot-clé réservé. Ils servent à stocker des données simples.
Les Entiers (Nombres sans virgule)
-
byte: Le plus petit entier. Utile pour économiser de la mémoire dans de grands tableaux ou pour manipuler des données binaires brutes (fichiers, réseau). -
short: Un entier court. Rarement utilisé, il servait autrefois à économiser de la mémoire sur des machines limitées. -
int: Le type par défaut pour les entiers. C’est le plus utilisé pour les compteurs et les calculs classiques. -
long: Utilisé quand la plage duintest insuffisante (ex: identifiants uniques, distances astronomiques, temps en millisecondes).
Les Float (Nombres à virgule)
-
float: Précision simple. Nécessite le suffixef(ex:3.14f). Utilisé pour économiser de la mémoire dans les bibliothèques graphiques. -
double: Précision double. C’est le type par défaut pour les nombres décimaux. Plus précis que lefloat.
Les Autres
-
boolean: Ne possède que deux valeurs possibles :true(vrai) oufalse(faux). Utilisé pour la logique conditionnelle. -
char: Stocke un seul caractère (lettre, chiffre ou symbole). Il utilise le codage Unicode (16 bits).
2. Tableau Récapitulatif des Primitifs
| Type | Taille (bits) | Valeur par défaut | Plage de valeurs |
|---|---|---|---|
| byte | 8 | 0 | -128 à 127 |
| short | 16 | 0 | -32 768 à 32 767 |
| int | 32 | 0 | -2,1 à +2,1 milliards |
| long | 64 | 0L | à |
| float | 32 | 0.0f | Env. 7 chiffres significatifs |
| double | 64 | 0.0d | Env. 15 chiffres significatifs |
| boolean | 1 (virtuel) | false | true ou false |
| char | 16 | '\u0000' | Caractère Unicode (0 à 65 535) |
3. Les Types Complexes (Références)
Les types complexes ne stockent pas la donnée elle-même, mais une référence (une adresse) vers l’endroit où se trouve l’objet en mémoire.
-
Classes (ex:
String,Scanner) : Peuvent contenir des données et des méthodes. -
Tableaux (ex:
int[],String[]) : Même s’ils contiennent des primitifs, le tableau lui-même est un objet. -
Interfaces : Définissent un contrat de comportement.
-
Valeur par défaut : Toujours
nulls’ils ne sont pas initialisés.
4. Comparatif : Primitif vs Objet
| Caractéristique | Type Primitif | Type Objet (Référence) |
|---|---|---|
| Localisation | Mémoire Stack (rapide) | Mémoire Heap (flexible) |
| Nullité | Impossible (toujours une valeur) | Peut être null (risque de NullPointerException) |
| Méthodes | Aucune | On peut appeler des méthodes (ex: .length()) |
| Comparaison | == compare la valeur | == compare l’adresse (utiliser .equals()) |
5. Classes Wrappers et Autoboxing
Chaque primitif a un “équivalent” objet pour être utilisé dans les collections (comme ArrayList).
| Primitif | Wrapper (Objet) |
|---|---|
int | Integer |
double | Double |
char | Character |
boolean | Boolean |
Exemple d’Autoboxing :
Java
ArrayList<Integer> liste = new ArrayList<>();
liste.add(10); // Le int 10 est transformé automatiquement en objet Integer