Interaction avec l'utilisateur via la classe Scanner
Pour capturer les entrées utilisateur en Java, on utilise principalement la classe java.util.Scanner. Introduite avec Java 5, elle permet de lire des données provenant de diverses sources, notamment la console (System.in).
import java.util.Scanner;
public class GestionEntree {
public static void main(String[] args) {
// Initialisation de l'objet Scanner
Scanner monLecteur = new Scanner(System.in);
if (monLecteur.hasNextLine()) {
String saisie = monLecteur.nextLine();
System.out.println("Saisie reçue : " + saisie);
}
// Toujours fermer le scanner pour libérer les ressources système (IO streams)
monLecteur.close();
}
}
Structures de Contrôle Conditionnelless
Java suit une exécution séquentielle, mais permet de bifurquer via des structures décisionnelles.
L'instruction if
Elle permet d'exécuter un bloc de code si une condition booléenne est vérifiée. Elle se décline en formes simple, binaire (if-else) ou multiple (if-else if-else).
int score = 85;
if (score >= 90) {
System.out.println("Excellent");
} else if (score >= 70) {
System.out.println("Bien");
} else {
System.out.println("À améliorer");
}
La structure switch
Idéale pour comparer une variable à une liste de valeurs constantes.
char grade = 'B';
switch(grade) {
case 'A':
System.out.println("Parfait");
break;
case 'B':
System.out.println("Très bien");
break;
default:
System.out.println("Grade non reconnu");
}
Structures de Boucles
Les boucles permettent de répéter un bloc d'instructions tant qu'une condition reste vraie.
- while : Vérifie la condition avant d'exécuter le bloc.
- do...while : Exécute le bloc au moins une fois avant de vérifier la condition.
- for : Structure compacte incluant initialisation, condition et incrémentation.
// Exemple de boucle for
for (int i = 0; i < 5; i++) {
System.out.println("Index : " + i);
}
// Exemple do...while
int j = 0;
do {
System.out.println("Valeur de j : " + j);
j++;
} while (j < 0); // S'exécute une fois malgré la condition fausse
Méthodes et Récusrivité
Une méthode est un bloc de code nommé conçu pour accomplir une tâche spécifique. Java supporte la surcharge de méthodes, permettant d'avoir plusieurs méthodes avec le même nom mais des paramètres différents.
Arguments en ligne de commande
Il est possible de passer des paramètres à un programme lors de son lancement via le tableau String[] args de la méthode main.
public static void main(String[] arguments) {
for (String arg : arguments) {
System.out.println("Argument reçu : " + arg);
}
}
Récursivité
La récursivité survient lorsqu'une méthode s'appelle elle-même. Elle nécessite impérativement :
- Une condition d'arrêt (cas de base) pour éviter une boucle infinie.
- Un corps récursif qui réduit le problème vers la condition d'arrêt.
Tableaux et Gestion de la Mémoire
Un tableau est un conteneur d'objets ou de types primitifs d'un type unique et de taille fixe.
// Déclaration et allocation
int[] nombres = new int[5];
nombres[0] = 10;
Analyse de la mémoire Java (JVM)
La gestion des données s'articule autour de trois zones principales :
- Le Tas (Heap) : Stocke les objets créés avec le mot-clé
newet les tableaux. C'est une zone partagée par tous les threads. - La Pile (Stack) : Stocke les variables locales de types primitifs et les références d'objets (adresses pointant vers le Heap). Chaque thread possède sa propre pile.
- Zone des Méthodes (Method Area) : Contient la structure des classes, les constantes et les variables statiques.