Guide Java pour Debutants
Java est un langage oriente objet, fortement type, compile et portable. Il est utilise dans les applications
dentreprise, Android, et bien plus encore.
Prerequis : Installez le JDK (Java Development Kit) depuis [Link]. Pour compiler : javac
[Link] — Pour executer : java MonFichier
1. Structure dun Programme Java
// Tout programme Java doit avoir une classe
public class MonPremierProgramme {
public static void main(String[] args) {
[Link]("Bonjour, monde !");
[Link]("Formate : %s a %d ans%n", "Alice", 25);
}
}
// Fichier : [Link] (nom fichier = nom classe)
2. Variables et Types de Donnees
public class Variables {
public static void main(String[] args) {
// Types primitifs
int age = 25;
long pop = 8000000000L;
double taille = 1.75;
boolean actif = true;
char initiale = 'J';
// Chaines (objets)
String nom = "Dupont";
String prenom = "Jean";
String complet = prenom + " " + nom;
// var (inference de type, Java 10+)
var message = "Bonjour !";
// Constante
final double PI = 3.14159;
// Casting
double d = 9.99;
int i = (int) d; // 9 (troncature)
}
}
3. Conditions et Boucles
Conditions
int age = 20;
if (age >= 18) {
[Link]("Majeur");
} else if (age >= 13) {
[Link]("Adolescent");
} else {
[Link]("Enfant");
}
// Operateur ternaire
String statut = age >= 18 ? "majeur" : "mineur";
// Switch expression (Java 14+)
String jour = "LUNDI";
String type = switch (jour) {
case "LUNDI", "MARDI", "MERCREDI", "JEUDI", "VENDREDI" -> "Jour ouvre";
case "SAMEDI", "DIMANCHE" -> "Week-end";
default -> "Inconnu";
};
Boucles
// Boucle for classique
for (int i = 0; i < 5; i++) {
[Link](i);
}
// Boucle while
int compteur = 0;
while (compteur < 5) {
[Link](compteur);
compteur++;
}
// For-each (tableaux et collections)
String[] fruits = {"pomme", "banane", "cerise"};
for (String fruit : fruits) {
[Link](fruit);
}
// break et continue
for (int i = 0; i < 10; i++) {
if (i == 5) break;
if (i % 2 == 0) continue;
[Link](i); // 1, 3
}
4. Tableaux et Collections
Tableaux
int[] nombres = {1, 2, 3, 4, 5};
int[] autresNombres = new int[5];
[Link](nombres[0]); // 1
[Link]([Link]); // 5
// Tableau 2D
int[][] matrice = {{1,2,3},{4,5,6},{7,8,9}};
[Link](matrice[1][2]); // 6
Collections ([Link])
import [Link];
import [Link];
import [Link];
import [Link];
// ArrayList (liste dynamique)
List<String> fruits = new ArrayList<>();
[Link]("pomme");
[Link]("banane");
[Link]("banane");
[Link]([Link](0)); // pomme
[Link]([Link]()); // 1
[Link]([Link]("pomme")); // true
// HashMap (cle-valeur)
Map<String, Integer> ages = new HashMap<>();
[Link]("Alice", 25);
[Link]("Bob", 30);
[Link]([Link]("Alice")); // 25
// Parcourir une Map
for ([Link]<String, Integer> entry : [Link]()) {
[Link]([Link]() + " : " + [Link]());
}
5. Classes et Programmation Orientee Objet
public class Voiture {
private String marque;
private String modele;
private int annee;
private double kilometrage;
public Voiture(String marque, String modele, int annee) {
[Link] = marque;
[Link] = modele;
[Link] = annee;
[Link] = 0;
}
public String getMarque() { return marque; }
public double getKilometrage() { return kilometrage; }
public void rouler(double km) {
if (km > 0) [Link] += km;
}
@Override
public String toString() {
return marque + " " + modele + " (" + annee + ")";
}
}
// Heritage
public class VoitureElectrique extends Voiture {
private int autonomie;
public VoitureElectrique(String marque, String modele, int annee, int autonomie) {
super(marque, modele, annee);
[Link] = autonomie;
}
public void recharger() { [Link]("Batterie rechargee !"); }
}
// Interface
public interface Assurable {
double calculerPrime(); // A implementer
default String getType() {
return "Assurance standard";
}
}
// Utilisation
Voiture v = new Voiture("Renault", "Clio", 2022);
[Link](150.5);
[Link](v);
6. Gestion des Exceptions
try {
int resultat = 10 / 0;
} catch (ArithmeticException e) {
[Link]("Erreur : " + [Link]());
} catch (Exception e) {
[Link]("Erreur generale : " + [Link]());
} finally {
[Link]("Ce bloc sexecute toujours");
}
// Lever une exception
public void setAge(int age) {
if (age < 0 || age > 150)
throw new IllegalArgumentException("Age invalide : " + age);
[Link] = age;
}
// try-with-resources
try (BufferedReader br = new BufferedReader(new FileReader("[Link]"))) {
String ligne;
while ((ligne = [Link]()) != null) {
[Link](ligne);
}
} catch (IOException e) {
[Link]();
}
7. Java Moderne (Java 8+)
Lambda et Streams
import [Link].*;
import [Link].*;
List<String> noms = [Link]("Alice", "Bob", "Charlie", "Diana");
// Lambda
[Link](nom -> [Link](nom));
// Streams
List<String> nomsLongs = [Link]()
.filter(n -> [Link]() > 4)
.map(String::toUpperCase)
.sorted()
.collect([Link]());
// Optional (evite les NullPointerException)
Optional<String> optNom = [Link](getNom());
String nom = [Link]("Inconnu");
[Link](n -> [Link]("Bonjour " + n));
Records et Enum
// Record (Java 16+) : classe immuable auto-generee
public record Point(int x, int y) {}
Point p = new Point(3, 4);
[Link](p.x()); // 3
[Link](p); // Point[x=3, y=4]
// Enum
public enum Couleur { ROUGE, VERT, BLEU }
Couleur c = [Link];
8. Bonnes Pratiques Java
Nommage : variables/methodes en camelCase, classes en PascalCase, constantes en
SCREAMING_SNAKE_CASE
Encapsulation : attributs toujours private, acces via getters/setters
Outils : Maven ou Gradle pour les dependances, IntelliJ IDEA ou Eclipse comme IDE, JUnit 5 pour les
tests
Annotations importantes : @Override, @Deprecated, @FunctionalInterface, @Nullable
Prochaines etapes : Apprenez les Design Patterns (Singleton, Factory, Builder...), les tests avec JUnit 5, la
gestion de build avec Maven, puis explorez Spring Boot pour le developpement web !