Types, variables et expressions
Cours · programmation Java (école d'ingénieur), chapitre 2 · école d'ingénieur, informatique · le début du chapitre, la suite sur Adloun
Un programme qui ne fait qu'afficher des textes fixés d'avance n'est pas très utile. Pour calculer une moyenne, convertir une durée ou tenir un score, il faut mémoriser des valeurs, les combiner par des opérations, et réutiliser les résultats. C'est le rôle des variables et des expressions.
Java est un langage fortement typé : chaque valeur a un type (entier, nombre décimal, caractère, booléen…), et le compilateur vérifie que l'on ne mélange pas les types n'importe comment. Cette rigueur, parfois agaçante au début, attrape une foule d'erreurs avant même l'exécution. Elle oblige aussi à connaître les pièges de l'arithmétique des ordinateurs, qui n'est pas tout à fait celle des mathématiques : la division entière, le dépassement de capacité, l'imprécision des nombres décimaux.
Objectifs du chapitre
- Déclarer, initialiser et modifier des variables ; connaître les huit types primitifs et leurs limites.
- Écrire des expressions arithmétiques et logiques, et prévoir leur valeur (priorités, division entière, reste, court-circuit).
- Connaître les pièges : division entière, dépassement de capacité, comparaison de nombres décimaux,
=au lieu de==. - Convertir d'un type à l'autre, implicitement ou par transtypage.
- Utiliser la classe
Math.
2.1 Les variables
2.1.1 Déclarer, affecter, initialiser
Une variable est une case de la mémoire, désignée par un nom, qui contient une valeur d'un type donné. Le type fixe l'ensemble des valeurs possibles et les opérations permises ; il ne change jamais au cours de la vie de la variable. La valeur, elle, peut changer.
public class Variables {
public static void main(String[] args) {
int age; // déclaration
age = 19; // affectation
int annee = 2026; // déclaration avec initialisation
System.out.println("Âge : " + age + ", année : " + annee);
age = age + 1; // la nouvelle valeur remplace l'ancienne
System.out.println("L'an prochain : " + age);
double prix = 12.5;
boolean majeur = age >= 18;
char initiale = 'A';
System.out.println(prix + " " + majeur + " " + initiale);
}
}
Âge : 19, année : 2026
L'an prochain : 20
12.5 true A
int age;est une déclaration : elle réserve une case nomméeagepour un entier.age = 19;est une affectation : elle range la valeur dans la case. Le signe=n'est pas l'égalité des mathématiques : il se lit « reçoit ».age = age + 1;n'a donc rien d'absurde : on calcule d'abord la partie droite avec l'ancienne valeur (), puis on range le résultat dansage, qui vaut désormais .
Attention
Une variable locale doit avoir reçu une valeur avant d'être lue. Le compilateur le vérifie :
int total;
System.out.println(total);
NonInit.java:4: error: variable total might not have been initialized
System.out.println(total);
^
1 error
2.1.2 Nommer les variables
Un nom de variable commence par une lettre, puis contient des lettres, des chiffres et le caractère _. Il ne peut pas être un mot réservé du langage (int, class, for…). La convention Java est le « dos de chameau » : prixTotal, nombreDEleves. Un bon nom dit ce que contient la variable : dureeEnSecondes vaut mieux que d, sauf pour un indice de boucle ou une formule courte.
2.1.3 Constantes
Une variable déclarée final ne peut recevoir qu'une seule valeur : c'est une constante. Par convention, son nom est en majuscules.
final double TVA = 0.20;
TVA = 0.055;
Constante.java:4: error: cannot assign a value to final variable TVA
TVA = 0.055;
^
1 error
Nommer les constantes plutôt que d'écrire des « nombres magiques » au milieu des calculs rend le programme lisible, et facile à modifier : si la TVA change, on ne corrige qu'une ligne.
2.2 Les types primitifs
Java possède huit types de base, dits primitifs. Leur taille est fixée par le langage, la même sur toutes les machines.
| Type | Nature | Taille | Valeurs |
|---|---|---|---|
byte | entier | 1 octet | à |
short | entier | 2 octets | à |
int | entier | 4 octets | à (environ ) |
long | entier | 8 octets | à (environ ) |
float | décimal | 4 octets | environ 7 chiffres significatifs |
double | décimal | 8 octets | environ 15 chiffres significatifs |
char | caractère | 2 octets | un caractère Unicode |
boolean | logique | — | true ou false |
La suite du cours est sur Adloun
Le chapitre en entier, formules et figures comprises, avec le tuteur, les fiches, les QCM et les exercices.
Lire la suite du coursEn accès libre, sans inscription.