Retour au blog

Les bases de la programmation en Java pour débutants

Structure d'un programme, variables, conditions, boucles et premiers objets : les bases de Java expliquées une à une, avec quatre exercices corrigés.

Cet article a été rédigé à des fins pédagogiques. Les informations présentées peuvent évoluer. Nous t’invitons à vérifier auprès de sources officielles.

Un programme Java, c'est une classe (un bloc de code qui porte un nom) qui contient une méthode, un bloc d'instructions nommé main que Java lance au démarrage. L'ordinateur exécute ces instructions une par une, de haut en bas, et chacune se termine par un point-virgule. Voici le plus petit programme complet, à enregistrer dans un fichier Bonjour.java :

public class Bonjour {
    public static void main(String[] args) {
        System.out.println("Bonjour !");
    }
}

Il affiche « Bonjour ! » : tout ce qui suit s'écrit à l'intérieur de ce cadre.

Ton premier programme, ligne par ligne

La première ligne déclare la classe Bonjour : en Java, tout le code vit dans une classe. Chaque { ouvre un bloc, chaque } le ferme.

La deuxième déclare la méthode main, le point de départ. Recopie-la telle quelle : ses autres mots prendront leur sens plus tard.

La troisième, System.out.println(...), affiche ce qu'on lui donne entre parenthèses, puis passe à la ligne. Un texte entre guillemets s'appelle une chaîne de caractères.

Depuis Java 25, le fichier peut se réduire à void main() { IO.println("Bonjour !"); } (JEP 512) ; la forme complète marche avec toutes les versions.

Piège classique : Java distingue majuscules et minuscules. system.out.println ne compile pas, et avec Main au lieu de main, Java ne trouve pas où commencer. Une classe public doit aussi se trouver dans un fichier à son nom exact : Bonjour.java, pas bonjour.java.

Compiler, puis exécuter

Pour lancer ton programme, installe un JDK (kit de développement Java). Il fournit deux commandes, à taper dans un terminal (la fenêtre de commandes) ouvert dans le dossier du fichier :

javac Bonjour.java
java Bonjour

La première compile : javac vérifie ton code et le traduit en bytecode, un langage intermédiaire rangé dans Bonjour.class. La seconde démarre la machine virtuelle Java (JVM), le programme qui exécute ce bytecode. Comme une JVM existe pour Windows, macOS et Linux, le même fichier .class tourne sur les trois (tutoriel Java d'Oracle). Un IDE (environnement de développement) enchaîne les deux étapes d'un clic.

Conseil : quand javac refuse ton code, lis son message : Bonjour.java:3: error: ';' expected signale un point-virgule manquant à la ligne 3. Corrige la première erreur, puis recompile.

Variables et types

Une variable est une case de la mémoire qui porte un nom et garde une valeur. En Java, son type (le genre de valeur qu'elle accepte) est fixé dès sa création.

int age = 15;
double prix = 12.5;
boolean inscrit = true;
String prenom = "Inès";
TypeCe qu'il contientExemples
intun nombre entier15, -3
doubleun nombre à virgule12.5
booleanvrai ou fauxtrue, false
Stringdu texte, entre guillemets"Inès"

Un nombre à virgule s'écrit avec un point : 12.5, pas 12,5. String prend une majuscule : c'est une classe fournie avec Java, pas un type de base.

Le signe = ne veut pas dire « égal » : il range la valeur de droite dans la variable de gauche. age = age + 1; fait passer age à 16.

Pour calculer, tu as +, -, * (multiplier), / (diviser) et %, qui donne le reste de la division : 17 % 5 vaut 2. Avec du texte, + colle : "J'ai " + age + " ans" donne « J'ai 16 ans ».

Piège classique : entre deux entiers, / fait une division entière et coupe tout ce qui suit la virgule. 7 / 2 vaut 3, pas 3,5. Dès qu'un des deux nombres est un double, le résultat est décimal : 7 / 2.0 vaut 3.5 (spécification de Java, § 15.17.2).

Les conditions : if et else

Une condition fait choisir au programme entre deux chemins, selon un test qui vaut true ou false.

int note = 12;
if (note >= 10) {
    System.out.println("Validé");
} else {
    System.out.println("À retravailler");
}

Ici note >= 10 est vrai : le programme affiche « Validé » et saute le bloc else. Les comparaisons s'écrivent <, >, <=, >=, == (égal) et != (différent).

Piège classique : on compare avec == ; un seul = range une valeur. Et pour deux textes, == vérifie s'il s'agit de la même chaîne en mémoire, pas des mêmes lettres : écris prenom.equals("Inès") (§ 15.21.3).

Les boucles : for et while

Une boucle répète un bloc. Quand tu connais le nombre de tours, prends for :

for (int i = 1; i <= 5; i++) {
    System.out.println(i);
}

La parenthèse contient le départ (i vaut 1), la condition pour continuer (i <= 5) et le changement à chaque tour (i++ ajoute 1 à i). Ce code affiche 1 à 5, un par ligne ; avec i < 5, il s'arrêterait à 4.

Si tu ne connais pas le nombre de tours, prends while, qui répète tant que la condition reste vraie :

int n = 1;
while (n < 100) {
    n = n * 2;
}
System.out.println(n);

n passe par 1, 2, 4, 8, 16, 32, 64, puis 128 : la condition devient fausse et le programme affiche 128.

Piège classique : la boucle infinie. Si aucune ligne du bloc ne rapproche la condition de false, la boucle ne s'arrête jamais : sans n = n * 2;, n reste à 1. Avant de lancer un while, repère cette ligne.

Classes et objets

Tu peux aussi créer tes propres types. Une classe décrit un modèle : les données de chaque exemplaire (ses attributs) et ce qu'il sait faire (ses méthodes). Un objet est un exemplaire fabriqué avec new. Écris cette classe dans le même fichier, après la dernière accolade de Bonjour :

class Rectangle {
    double largeur;
    double hauteur;

    double aire() {
        return largeur * hauteur;
    }
}

Puis, dans main :

Rectangle r = new Rectangle();
r.largeur = 4;
r.hauteur = 2.5;
System.out.println(r.aire());

Le programme affiche 10.0, avec le .0 d'un double. Le point se lit « de » : r.largeur, c'est la largeur de r. Le mot return renvoie le résultat de la méthode, et chaque objet garde ses propres dimensions.

Exercices corrigés

Du plus direct au niveau d'un contrôle. Cherche avant d'ouvrir la correction.

Exercice 1 : Sans ordinateur, écris ce qu'affiche ce code, ligne par ligne.

int a = 7;
int b = 2;
System.out.println(a / b);
System.out.println(a % b);
System.out.println(a / 2.0);
System.out.println("Total : " + a + b);

Correction :

a / b divise deux entiers : division entière, donc 3. Le reste de 7 par 2 vaut 1, puisque $7 = 2 \times 3 + 1$. Avec 2.0, la division devient décimale : 3.5.

La dernière ligne affiche Total : 72, pas 9 : de gauche à droite, Java colle 7 au texte, puis 2. Il faut des parenthèses : "Total : " + (a + b).

Exercice 2 : Ce programme doit afficher la moyenne de deux notes, 13 et 8. Il affiche 10.0. Trouve l'erreur et corrige-la.

int note1 = 13;
int note2 = 8;
double moyenne = (note1 + note2) / 2;
System.out.println(moyenne);

Correction :

La bonne moyenne est $\dfrac{13 + 8}{2} = 10{,}5$. Mais note1 + note2 et 2 sont des entiers : Java calcule d'abord 21 / 2, division entière, soit 10, puis range 10 dans le double, d'où 10.0. Déclarer moyenne en double arrive trop tard : c'est la division qui doit contenir un décimal.

double moyenne = (note1 + note2) / 2.0;

Le programme affiche alors 10.5.

Exercice 3 : Tu as 50 euros d'économies et tu en ajoutes 15 chaque semaine. Écris une boucle while qui calcule au bout de combien de semaines tu auras au moins 200 euros.

Correction :

On ignore le nombre de tours, d'où while : tant que la somme reste sous 200 euros, on ajoute 15 euros et une semaine.

int economies = 50;
int semaines = 0;
while (economies < 200) {
    economies = economies + 15;
    semaines++;
}
System.out.println(semaines + " semaines");

Le programme affiche « 10 semaines ». Vérification : après 9 semaines, $50 + 15 \times 9 = 185$ euros, pas assez ; après 10, $50 + 15 \times 10 = 200$ euros.

Exercice 4 : Écris un programme qui affiche les multiples de 3 compris entre 1 et 20, puis combien il y en a.

Correction :

Un multiple de 3 a un reste nul dans la division par 3 : c'est le test i % 3 == 0.

int compteur = 0;
for (int i = 1; i <= 20; i++) {
    if (i % 3 == 0) {
        System.out.println(i);
        compteur++;
    }
}
System.out.println(compteur + " multiples");

Le programme affiche 3, 6, 9, 12, 15 et 18, puis « 6 multiples ». Le compteur est déclaré avant la boucle pour exister encore après elle.

À retenir

À retenir :

  • Un programme Java : une classe, une méthode main, des instructions terminées par un point-virgule.
  • javac traduit en bytecode, java le fait exécuter par la JVM.
  • Le type d'une variable est fixé à sa création : int, double, boolean, String.
  • Entre deux entiers, / coupe la partie décimale.
  • = range, == compare des nombres, equals compare des textes.
  • for si tu connais le nombre de tours, sinon while.
  • Une classe décrit un modèle, new en fabrique des objets.

Sources

Tu peux partager cette page librement, en citant ORBITECH AI Academy avec son lien.