CHAPITRE 2.1

Variables et types de données

Comprendre les types primitifs et non primitifs en Java
Dans cette section, vous allez découvrir les variables et les types de données en Java. Les variables permettent de stocker des informations dans votre programme, et Java offre différents types de données pour différents types d'informations. Vous apprendrez les types primitifs (nombres, caractères, booléens) et les types non primitifs (objets, tableaux, chaînes de caractères). Cette compréhension est fondamentale pour écrire des programmes Java efficaces.

2.1Variables et types de données

2.1.1 – Types primitifs

Les types primitifs sont les types de données de base en Java. Ils représentent des valeurs simples comme des nombres, des caractères ou des booléens. Java possède huit types primitifs, chacun ayant une taille fixe et une plage de valeurs spécifique.

📊 Les huit types primitifs de Java

Type Taille Plage de valeurs Exemple
byte 8 bits (1 octet) -128 à 127 byte age = 25;
short 16 bits (2 octets) -32 768 à 32 767 short temperature = -10;
int 32 bits (4 octets) -2³¹ à 2³¹-1 int nombre = 1000;
long 64 bits (8 octets) -2⁶³ à 2⁶³-1 long population = 8000000000L;
float 32 bits (4 octets) ≈ ±3.4×10³⁸ float prix = 19.99f;
double 64 bits (8 octets) ≈ ±1.7×10³⁰⁸ double pi = 3.14159;
char 16 bits (2 octets) Un seul caractère Unicode char lettre = 'A';
boolean 1 bit (valeur logique) true ou false boolean actif = true;

🔢 Types entiers (byte, short, int, long)

Les types entiers permettent de stocker des nombres entiers (positifs, négatifs ou zéro) :

byte

Le type byte est le plus petit type entier. Il est utile pour économiser de la mémoire quand vous savez que les valeurs seront petites :

Exemples d'utilisation de byte :

byte age = 25;
byte temperature = -10;
byte score = 100;  // ✅ Correct (100 est dans la plage -128 à 127)

byte tropGrand = 200;  // ❌ ERREUR : 200 dépasse 127

short

Le type short peut stocker des entiers plus grands que byte :

Exemples d'utilisation de short :

short annee = 2024;
short distance = 15000;
short temperature = -50;

int (le plus utilisé)

Le type int est le type entier le plus couramment utilisé en Java. C'est le type par défaut pour les nombres entiers :

Exemples d'utilisation de int :

int nombre = 42;
int age = 30;
int population = 1000000;
int temperature = -25;
Conseil : Pour la plupart des cas, utilisez int pour les nombres entiers. C'est le type le plus équilibré entre taille et plage de valeurs.

long

Le type long est utilisé pour les très grands nombres entiers. Notez le suffixe L ou l :

Exemples d'utilisation de long :

long populationMondiale = 8000000000L;
long distanceSoleil = 150000000000L;
long timestamp = 1234567890123L;
Important : N'oubliez pas le L à la fin pour indiquer que c'est un long !

🔢 Types décimaux (float, double)

Les types décimaux permettent de stocker des nombres à virgule flottante (nombres réels) :

float

Le type float stocke des nombres décimaux avec une précision simple. Notez le suffixe f ou F :

Exemples d'utilisation de float :

float prix = 19.99f;
float temperature = -5.5f;
float pourcentage = 85.5f;
Important : N'oubliez pas le f à la fin pour indiquer que c'est un float !

double (le plus utilisé pour les décimaux)

Le type double offre une précision double et est le type par défaut pour les nombres décimaux en Java :

Exemples d'utilisation de double :

double pi = 3.14159265359;
double prix = 29.99;
double moyenne = 15.75;
Note : Pas besoin de suffixe pour double, c'est le type par défaut.
Quand utiliser float ou double ?
double : Utilisez-le par défaut pour les nombres décimaux (meilleure précision)
float : Utilisez-le seulement si vous avez besoin d'économiser de la mémoire et que la précision simple suffit

🔤 Type caractère (char)

Le type char stocke un seul caractère Unicode. Les caractères sont délimités par des apostrophes simples ' :

Exemples d'utilisation de char :

char lettre = 'A';
char chiffre = '5';
char symbole = '@';
char espace = ' ';

// Caractères spéciaux
char nouvelleLigne = '\n';  // Retour à la ligne
char tabulation = '\t';    // Tabulation
char guillemet = '\'';     // Apostrophe
char guillemetDouble = '\"'; // Guillemet double
Important :
  • Les caractères utilisent des apostrophes simples 'A'
  • Les chaînes de caractères utilisent des guillemets doubles "Hello"
  • Ne confondez pas char (un caractère) et String (une chaîne de caractères)

✅ Type booléen (boolean)

Le type boolean ne peut avoir que deux valeurs : true (vrai) ou false (faux). Il est utilisé pour les conditions et les expressions logiques :

Exemples d'utilisation de boolean :

boolean estActif = true;
boolean estVide = false;
boolean estMajeur = true;
boolean aTermine = false;
Important : En Java, boolean ne peut être que true ou false. Contrairement à certains langages, vous ne pouvez pas utiliser 1 ou 0 pour représenter vrai/faux.

📝 Déclaration et initialisation de variables

Pour utiliser une variable, vous devez d'abord la déclarer (et éventuellement l'initialiser) :

Syntaxe de déclaration

type nomVariable = valeur;

Exemples

Déclaration et initialisation :

// Déclaration et initialisation en une ligne
int age = 25;
double prix = 19.99;
char lettre = 'A';
boolean actif = true;

// Déclaration puis initialisation séparée
int nombre;
nombre = 10;

// Déclaration de plusieurs variables du même type
int x, y, z;
x = 1;
y = 2;
z = 3;

⚠️ Règles importantes

  • Nom de variable : Doit commencer par une lettre, un underscore _ ou un dollar $
  • Caractères autorisés : Lettres, chiffres, underscore, dollar
  • Sensibilité à la casse : age et Age sont deux variables différentes
  • Mots-clés réservés : Ne peuvent pas être utilisés comme noms de variables (class, public, static, etc.)
  • Convention de nommage : Utilisez camelCase (première lettre minuscule, puis majuscules pour les mots suivants)

Exemples de noms de variables :

int age;              // ✅ Correct
int ageUtilisateur;   // ✅ Correct (camelCase)
int _temp;            // ✅ Correct
int $count;           // ✅ Correct (mais peu utilisé)
int 2nombre;          // ❌ Incorrect (ne peut pas commencer par un chiffre)
int mon-nom;          // ❌ Incorrect (tiret non autorisé)
int class;            // ❌ Incorrect (mot-clé réservé)
int Age;              // ✅ Correct (mais différent de 'age')

💡 Points clés à retenir

  • 8 types primitifs : byte, short, int, long, float, double, char, boolean
  • int : Type entier le plus utilisé
  • double : Type décimal le plus utilisé
  • Suffixes : L pour long, f pour float
  • char : Un seul caractère avec apostrophes simples 'A'
  • boolean : Seulement true ou false
  • Déclaration : type nomVariable = valeur;
  • Nommage : camelCase, commence par une lettre
Conseil pratique : Pour débuter, concentrez-vous sur int (entiers), double (décimaux), char (caractères) et boolean (booléens). Ce sont les types primitifs les plus utilisés. Les autres types (byte, short, float, long) sont utilisés dans des cas spécifiques.

2.1.2 – Types non primitifs

Les types non primitifs (également appelés types référence) sont des objets en Java. Contrairement aux types primitifs, ils peuvent être null et ont des méthodes associées. Les types non primitifs les plus courants sont les chaînes de caractères (String), les tableaux, et les objets de classes personnalisées.

🔤 String : Les chaînes de caractères

String est la classe la plus utilisée pour manipuler du texte en Java. Bien qu'elle ne soit pas un type primitif, elle est si courante qu'elle mérite une attention particulière.

Déclaration et initialisation d'une String

Exemples d'utilisation de String :

String nom = "Jean";
String message = "Bonjour le monde !";
String vide = "";  // Chaîne vide
String nullString = null;  // Peut être null (contrairement aux primitifs)

Différences entre char et String

Caractéristique char String
Type Primitif Non primitif (classe)
Délimiteurs Apostrophes simples 'A' Guillemets doubles "Hello"
Contenu Un seul caractère Zéro, un ou plusieurs caractères
Peut être null Non Oui
Méthodes Aucune Nombreuses (length(), toUpperCase(), etc.)

Opérations courantes sur les String

Exemples d'opérations String :

String texte = "Hello";

// Longueur de la chaîne
int longueur = texte.length();  // Retourne 5

// Concaténation (assemblage de chaînes)
String message = "Hello" + " " + "World";  // "Hello World"

// Conversion en majuscules/minuscules
String maj = texte.toUpperCase();  // "HELLO"
String min = texte.toLowerCase();  // "hello"

// Comparaison
boolean egal = texte.equals("Hello");  // true

📦 Tableaux (Arrays)

Les tableaux permettent de stocker plusieurs valeurs du même type dans une structure ordonnée :

Déclaration et initialisation de tableaux

Exemples de tableaux :

// Tableau d'entiers
int[] nombres = {10, 20, 30, 40, 50};

// Tableau de chaînes
String[] noms = {"Alice", "Bob", "Charlie"};

// Tableau vide (taille fixe)
int[] tableau = new int[5];  // Tableau de 5 entiers (valeurs par défaut : 0)

// Tableau de caractères
char[] lettres = {'A', 'B', 'C'};

// Tableau de booléens
boolean[] etats = {true, false, true};

Accès aux éléments d'un tableau

Accès et modification :

int[] nombres = {10, 20, 30};

// Accéder à un élément (index commence à 0)
int premier = nombres[0];   // 10
int deuxieme = nombres[1];   // 20
int troisieme = nombres[2];  // 30

// Modifier un élément
nombres[0] = 100;  // Le tableau devient {100, 20, 30}

// Longueur du tableau
int taille = nombres.length;  // 3
Important :
  • Les indices commencent à 0 (pas à 1)
  • Le dernier indice est tableau.length - 1
  • Accéder à un indice invalide provoque une erreur ArrayIndexOutOfBoundsException

🏗️ Objets de classes personnalisées

Vous pouvez créer vos propres types en définissant des classes. Ces objets sont des types non primitifs :

Exemple de classe personnalisée :

// Définition de la classe
public class Personne {
    String nom;
    int age;
}

// Utilisation
Personne personne = new Personne();
personne.nom = "Jean";
personne.age = 25;
Note : Nous verrons les classes en détail dans le Chapitre 4. Pour l'instant, retenez simplement que les objets de classes sont des types non primitifs.

🔄 Différences principales : Primitifs vs Non primitifs

Caractéristique Types primitifs Types non primitifs
Exemples int, double, char, boolean String, tableaux, objets
Valeur par défaut Oui (0, 0.0, false, etc.) null
Peut être null Non Oui
Stockage Valeur directement Référence à l'objet
Méthodes Aucune Oui (nombreuses)
Taille Fixe (définie) Variable

💡 Points clés à retenir

  • Types non primitifs : String, tableaux, objets de classes
  • String : Chaînes de caractères avec guillemets doubles "Hello"
  • Tableaux : Collections de valeurs du même type, indices commencent à 0
  • null : Les types non primitifs peuvent être null
  • Méthodes : Les types non primitifs ont des méthodes (length(), toUpperCase(), etc.)
  • Référence : Les types non primitifs stockent une référence à l'objet, pas la valeur directement
Conseil pratique : Pour débuter, concentrez-vous sur String (chaînes de caractères) et les tableaux. Ce sont les types non primitifs les plus utilisés. Les classes personnalisées seront abordées en détail dans les chapitres sur la programmation orientée objet.