Types de données intégrés en Java

03 Sep 2019 03 Sep 2019 5417 vues ESSADDOUKI Mostafa 11 min de lecture
Introduction
1 Nouveautés de Java 11 2 Différences entre JDK, JRE et JVM 3 Structure d'un programme Java - Hello World 4 Mots clés et conventions de dénomination en Java 5 Types de données intégrés en Java 6 Les variables en Java 7 Classes enveloppe - Number, Integer, Double ... 8 Lire les entrées clavier en Java
Structures de contrôle
9 Les opérateurs en Java 10 Les structures conditionnelles en Java 11 Les boucles en Java 12 Instructions de contrôle de boucle - break, continue
Chaines de caractères
13 Les chaines en Java - API String 14 Les chaines en Java - StringBuffer et StringBuilder 15 Les expressions régulières en Java
Programmation OO
16 Objets et classes en Java 17 Modificateurs d'accès Java - public, private, protected et package 18 Méthodes et surcharge des méthodes en Java 19 les constructeurs en Java 20 L'héritage en Java 21 Classes abstraites en Java 22 Interfaces et héritage multiple en Java 23 Les classes imbriquées en Java 24 Les singletons en Java 25 Classes et méthodes génériques 26 Interface fonctionnelle et expressions Lambda en Java
Tableaux et collections
27 Les tableaux en Java 28 Classe Arrays - java.util.Arrays 29 Les listes dynamiques - java.util.ArrayList 30 Les listes chaînées en Java - java.util.LinkedList 31 HashSet en Java - java.util.HashSet 32 HashMap en Java - java.util.HashMap
Gestion des fichiers
33 Comprendre les fichiers informatiques 34 Utilisation des classes Path et Files en Java 35 Lecture et écriture dans un fichier en Java 36 Fichiers à accès aléatoire en Java
Gestion d'exceptions
37 Gestion d'exceptions en Java 38 Créez vos propres classes d'exception en Java
Programmation concurrente
39 Introduction à la programmation concurrente en Java - Multi-threads 40 classe java.lang.Thread 41 Synchronisation des threads en Java
Cours Java pour les débutants — Étape 5 sur 41

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éfinition — Variable Une variable est un nom symbolique associé à un emplacement mémoire. La valeur stockée à cet emplacement peut être lue et modifiée pendant l'exécution du programme. En Java, toute variable doit être déclarée avant son utilisation.
   
Déclaration et initialisation Java
// Déclaration seule
int age;

// Déclaration + initialisation
int age = 20;

// Affectation après déclaration
age = 21;
Mémoire et type En fonction du type de données déclaré, le système d'exploitation alloue un espace mémoire adapté. C'est pourquoi choisir le bon type est important : un byte occupe 8 fois moins de place qu'un long.

2. Les deux grandes familles de types

Classification des types Java Java distingue deux 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
boolean Représente une information binaire : 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
Sortie
true
char — caractère Unicode
char Caractère Unicode 16 bits non signé. Les valeurs vont de '\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)
Sortie
A
65
byte — entier 8 bits
byte Entier signé sur 8 bits, plage [−128 ; 127]. Utile pour économiser de la mémoire dans de grands tableaux ou pour manipuler des flux d'octets. Valeur par défaut : 0.
byte temperature = -5;
byte maxByte     = 127;
// byte erreur   = 200;  dépassement de plage
short — entier 16 bits
short Entier signé sur 16 bits, plage [−32 768 ; 32 767]. Rarement utilisé directement ; principalement pour optimiser la mémoire dans des tableaux. Valeur par défaut : 0.
short annee    = 2025;
short altitude = -200;
int — entier 32 bits (type par défaut)
int Entier signé sur 32 bits, plage [−2 147 483 648 ; 2 147 483 647]. C'est le type entier par défaut en Java — utilisez-le sauf contrainte mémoire particulière. Valeur par défaut : 0.
int nombreEleves  = 35;
int populationFes = 1_200_000; // _ améliore la lisibilité (Java 7+)
System.out.println(populationFes); // 1200000
Sortie
1200000
Séparateur de milliers (Java 7+) Le caractère _ 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
long Entier signé sur 64 bits. À utiliser quand la valeur dépasse la plage de 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);
Sortie
8100000000
Suffixe L obligatoire Sans le suffixe 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 Nombre à virgule flottante IEEE 754 sur 32 bits (environ 7 chiffres significatifs). Un littéral float doit être suffixé par f ou F. Valeur par défaut : 0.0f.
float pi        = 3.14159f;
float temperatureF = -42.3f;
Ne jamais utiliser float (ni double) pour les montants financiers Les types flottants introduisent des erreurs d'arrondi inhérentes à leur représentation binaire. Pour les calculs financiers, utilisez java.math.BigDecimal.
double — virgule flottante double précision (type par défaut)
double Nombre à virgule flottante IEEE 754 sur 64 bits (environ 15 chiffres significatifs). C'est le type décimal par défaut en Java. Valeur 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
Sortie
2.998E8

4. Les types référence

Définition — Type référence Une variable de type référence ne stocke pas la valeur directement, mais l'adresse mémoire d'un objet alloué dans le tas (heap). La valeur par défaut de toute variable référence est 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

Définition — Littéral Un littéral est une valeur fixe écrite directement dans le code source, sans calcul. Java reconnaît plusieurs catégories de littéraux.

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
Sortie
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
Simple vs double guillemets '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");
Sortie
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);
Sortie
{
    "nom": "Mostafa",
    "role": "Professeur"
}

6. Exercice

Déclarer et afficher des variables de tous les types primitifs

Niveau : Débutant

É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é

  1. Déclarer et initialiser une variable de chaque type primitif.
  2. Afficher chaque variable avec un libellé descriptif.
  3. Afficher la valeur 100 en décimal, octal, hexadécimal et binaire.
  4. Utiliser au moins deux séquences d'échappement différentes dans vos affichages.
Exemple de sortie attendue
Sortie
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
Contraintes
  • Utiliser des séparateurs _ pour les grands nombres
  • Suffixer correctement les littéraux long (L) et float (f)
  • Utiliser \t pour aligner les affichages

  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.

Sortie
// La sortie apparaîtra ici…
Prêt · Ctrl+Entrée pour exécuter

Discussion (0)

Soyez le premier à laisser un commentaire !

Laisser un commentaire

Votre commentaire sera visible après modération.