Variables, types de données et littéraux en Java
Prérequis
Connaître la structure d'un programme Java (classe, méthode main). Avoir des notions de base sur la représentation binaire des nombres.
Objectifs
Comprendre la notion de variable et d'emplacement mémoire. Maîtriser les huit types primitifs Java, distinguer types primitifs et types référence, et manipuler les littéraux et séquences d'échappement.
1. La notion de variable
// Déclaration seule
int age;
// Déclaration + initialisation
int age = 20;
// Affectation après déclaration
age = 21;
byte occupe 8 fois moins de place qu'un long.2. Les deux grandes familles de types
- Types primitifs : 8 types prédéfinis par le langage, stockés directement en mémoire pile.
- Types référence / objets : variables pointant vers des objets alloués en mémoire tas (heap).
3. Les huit types primitifs
3.1 Tableau récapitulatif
| Type | Taille | Plage de valeurs | Valeur par défaut | Usage typique |
|---|---|---|---|---|
boolean |
1 bit | true / false |
false |
Conditions, drapeaux |
char |
16 bits | '\u0000' à '\uffff' (0 à 65 535) |
'\u0000' |
Caractère Unicode unique |
byte |
8 bits | −128 à 127 | 0 |
Flux d'octets, économie mémoire |
short |
16 bits | −32 768 à 32 767 | 0 |
Économie mémoire (tableaux larges) |
int |
32 bits | −231 à 231−1 | 0 |
Entier par défaut |
long |
64 bits | −263 à 263−1 | 0L |
Grands entiers (timestamps, IDs) |
float |
32 bits | IEEE 754 simple précision | 0.0f |
Calculs flottants (mémoire réduite) |
double |
64 bits | IEEE 754 double précision | 0.0d |
Décimal par défaut |
3.2 Détail de chaque type
boolean — valeur logique
true (vrai) ou false (faux). Utilisé pour les tests conditionnels et les drapeaux d'état. Valeur par défaut : false.
boolean estConnecte = true;
boolean aReussi = false;
System.out.println(estConnecte); // true
true
char — caractère Unicode
'\u0000' (0) à '\uffff' (65 535). Un littéral char est entouré de guillemets simples.
char lettre = 'A';
char symbole = '\u03A9'; // Ω (oméga grec)
char chiffre = '7';
System.out.println(lettre); // A
System.out.println((int) lettre); // 65 (code Unicode)
A 65
byte — entier 8 bits
0.
byte temperature = -5;
byte maxByte = 127;
// byte erreur = 200; dépassement de plage
short — entier 16 bits
0.
short annee = 2025;
short altitude = -200;
int — entier 32 bits (type par défaut)
0.
int nombreEleves = 35;
int populationFes = 1_200_000; // _ améliore la lisibilité (Java 7+)
System.out.println(populationFes); // 1200000
1200000
_ peut être inséré dans les littéraux numériques pour améliorer la lisibilité : 1_000_000 est identique à 1000000.long — entier 64 bits
int. Un littéral long doit être suffixé par L (ou l). Valeur par défaut : 0L.
long populationMondiale = 8_100_000_000L;
long timestampMs = System.currentTimeMillis();
System.out.println(populationMondiale);
8100000000
L, un grand littéral entier est interprété comme un int, ce qui provoque une erreur de compilation si la valeur dépasse 231−1 : long x = 8100000000; ❌ → long x = 8100000000L; ✅float — virgule flottante simple précision
float doit être suffixé par f ou F. Valeur par défaut : 0.0f.
float pi = 3.14159f;
float temperatureF = -42.3f;
java.math.BigDecimal.double — virgule flottante double précision (type par défaut)
0.0d.
double moyenne = 14.75;
double constante = 2.998e8; // notation scientifique : 2.998 × 10^8
System.out.println(constante); // 2.998E8
2.998E8
4. Les types référence
null.
// Déclaration de types référence courants
String nom = "Mostafa"; // chaîne de caractères
int[] notes = {12, 15, 18}; // tableau d'entiers
Etudiant e = new Etudiant(); // instance de classe
// Valeur par défaut : null
String prenom; // prenom vaut null
System.out.println(prenom); // null
| Caractéristique | Type primitif | Type référence |
|---|---|---|
| Stockage | Valeur directe en pile | Adresse de l'objet (heap) |
| Valeur par défaut | 0, false, '\u0000'… |
null |
| Taille | Fixe (selon le type) | Variable (dépend de l'objet) |
| Exemples | int, double, boolean… |
String, tableaux, classes… |
5. Les littéraux Java
5.1 Littéraux entiers — bases de numération
Les types byte, short, int et long acceptent des littéraux en trois bases :
| Base | Préfixe | Exemple | Valeur décimale |
|---|---|---|---|
| Décimale (base 10) | aucun | 100 |
100 |
| Octale (base 8) | 0 |
0144 |
100 |
| Hexadécimale (base 16) | 0x |
0x64 |
100 |
| Binaire (base 2) | 0b |
0b1100100 |
100 |
Exemple — Quatre notations, même valeur
int decimal = 100;
int octal = 0144;
int hexa = 0x64;
int binaire = 0b1100100; // Java 7+
System.out.println(decimal); // 100
System.out.println(octal); // 100
System.out.println(hexa); // 100
System.out.println(binaire); // 100
100 100 100 100
5.2 Littéraux de caractères et chaînes
char lettre = 'g'; // guillemets simples → char
char newline = '\n'; // séquence d'échappement
String message = "Java 21"; // guillemets doubles → String
String unicode = "\u03A9"; // Ω — caractère Unicode
'A' est un char (caractère unique), tandis que "A" est un objet String. Ces deux types sont incompatibles : on ne peut pas affecter un char à une variable String directement.5.3 Séquences d'échappement
| Séquence | Caractère représenté | Code ASCII / Unicode |
|---|---|---|
\n |
Retour à la ligne (nouvelle ligne) | 0x0A |
\r |
Retour chariot | 0x0D |
\t |
Tabulation horizontale | 0x09 |
\b |
Retour arrière (backspace) | 0x08 |
\f |
Saut de page | 0x0C |
\s |
Espace | 0x20 |
\" |
Guillemet double | 0x22 |
\' |
Guillemet simple (apostrophe) | 0x27 |
\\ |
Barre oblique inverse | 0x5C |
\ddd |
Caractère octal | ex : \101 → 'A' |
\uXXXX |
Caractère Unicode hexadécimal | ex : \u0041 → 'A' |
Exemple — Séquences d'échappement en pratique
System.out.println("Colonne1\tColonne2\tColonne3");
System.out.println("Ligne 1\nLigne 2\nLigne 3");
System.out.println("Il a dit : \"Bonjour !\"");
System.out.println("Chemin : C:\\Users\\Mostafa");
Colonne1 Colonne2 Colonne3 Ligne 1 Ligne 2 Ligne 3 Il a dit : "Bonjour !" Chemin : C:\Users\Mostafa
Complément — Text Blocks (Java 15+)
Depuis Java 15, les blocs de texte permettent d'écrire des chaînes multilignes sans séquences d'échappement, délimités par """ :
String json = """
{
"nom": "Mostafa",
"role": "Professeur"
}
""";
System.out.println(json);
{
"nom": "Mostafa",
"role": "Professeur"
}
6. Exercice
Déclarer et afficher des variables de tous les types primitifs
Écrire un programme Java nommé TypesPrimitifs qui déclare une variable de chacun des huit types primitifs, les initialise avec des valeurs significatives, puis les affiche formatées dans la console.
Travail demandé
- Déclarer et initialiser une variable de chaque type primitif.
- Afficher chaque variable avec un libellé descriptif.
- Afficher la valeur
100en décimal, octal, hexadécimal et binaire. - Utiliser au moins deux séquences d'échappement différentes dans vos affichages.
boolean : true char : A byte : 100 short : 1000 int : 2025 long : 8100000000 float : 3.14 double : 2.718281828 --- 100 en décimal : 100 100 en octal : 100 100 en hexadécimal : 100 100 en binaire : 100
- Utiliser des séparateurs
_pour les grands nombres - Suffixer correctement les littéraux
long(L) etfloat(f) - Utiliser
\tpour aligner les affichages
public class TypesPrimitifs {
public static void main(String[] args) {
// ── Les 8 types primitifs ─────────────────────────
boolean estActif = true;
char initiale = 'A';
byte score = 100;
short altitude = 1_000;
int annee = 2025;
long populationMonde = 8_100_000_000L;
float piApprox = 3.14f;
double e = 2.718_281_828;
System.out.println("boolean : " + estActif);
System.out.println("char : " + initiale);
System.out.println("byte : " + score);
System.out.println("short : " + altitude);
System.out.println("int : " + annee);
System.out.println("long : " + populationMonde);
System.out.printf ("float : %.2f%n", piApprox);
System.out.println("double : " + e);
// ── Différentes bases pour la valeur 100 ──────────
System.out.println("---");
int decimal = 100;
int octal = 0144;
int hexa = 0x64;
int binaire = 0b1100100;
System.out.println("100 en décimal\t\t: " + decimal);
System.out.println("100 en octal\t\t: " + octal);
System.out.println("100 en hexadécimal\t: " + hexa);
System.out.println("100 en binaire\t\t: " + binaire);
}
}
boolean : true char : A byte : 100 short : 1000 int : 2025 long : 8100000000 float : 3.14 double : 2.718281828 --- 100 en décimal : 100 100 en octal : 100 100 en hexadécimal : 100 100 en binaire : 100
8_100_000_000L: séparateur_pour la lisibilité + suffixeLobligatoire.3.14f: suffixefobligatoire pour un littéralfloat.printf("%.2f", ...): formate un flottant avec 2 décimales.- Les quatre variables (
decimal,octal,hexa,binaire) ont toutes la valeur100— le compilateur les convertit en décimal à l'affichage.
L'essentiel en bref
Une variable est un emplacement mémoire nommé, à déclarer avant usage en Java. Le langage propose 8 types primitifs : boolean, char, byte, short, int, long, float, double. Les types référence (objets, tableaux, String…) stockent une adresse et valent null par défaut. Les littéraux permettent d'écrire des valeurs directement dans le code, en décimal, octal (0), hexadécimal (0x) ou binaire (0b). Les séquences d'échappement (\n, \t, \"…) permettent d'insérer des caractères spéciaux dans les chaînes.
Discussion (0)
Soyez le premier à laisser un commentaire !
Laisser un commentaire
Votre commentaire sera visible après modération.