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 du int est insuffisante (ex: identifiants uniques, distances astronomiques, temps en millisecondes).

Les Float (Nombres à virgule)

  • float : Précision simple. Nécessite le suffixe f (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 le float.

Les Autres

  • boolean : Ne possède que deux valeurs possibles : true (vrai) ou false (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

TypeTaille (bits)Valeur par défautPlage de valeurs
byte80-128 à 127
short160-32 768 à 32 767
int320 -2,1 à +2,1 milliards
long640L à
float320.0fEnv. 7 chiffres significatifs
double640.0dEnv. 15 chiffres significatifs
boolean1 (virtuel)falsetrue ou false
char16'\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 null s’ils ne sont pas initialisés.


4. Comparatif : Primitif vs Objet

CaractéristiqueType PrimitifType Objet (Référence)
LocalisationMémoire Stack (rapide)Mémoire Heap (flexible)
NullitéImpossible (toujours une valeur)Peut être null (risque de NullPointerException)
MéthodesAucuneOn 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).

PrimitifWrapper (Objet)
intInteger
doubleDouble
charCharacter
booleanBoolean

Exemple d’Autoboxing :

Java

ArrayList<Integer> liste = new ArrayList<>();
liste.add(10); // Le int 10 est transformé automatiquement en objet Integer