Qu’est-ce que le JDK et le JRE ?
JDK = Java Development Kit (outil pour coder et compiler) JRE = Java Runtime Environment (exécute les programmes Java).
Quelle est la structure minimale d’un programme Java ?
Une classe avec une méthode public static void main(String[] args) { }.
Différence entre int, Integer, double, Double
int et double : types primitifs.Integer et Double : objets encapsulant les types primitifs.
Qu’est-ce qu’une variable locale, d’instance et statique ?
Local : déclarée dans méthode.
Instance : liée à l’objet.
Statique = liée à la classe (static).
Différence entre == et .equals()
== compare références (objets) ou valeurs primitives..equals() compare le contenu d’objets.
Que fait final sur une variable ?
La variable est une valeur constante.static final int MAX_WIDTH = 999;
La variable ne peut pas être réaffecté, mais on peut changer ses propriétés.final Cat cat = new Cat(); cat.setWeight(5).
Que fait final sur une méthode ?
La méthode est non surclassable.public final void sound(), d’une classe (Dog) ne peut pas être override dans une autre classe.public class BlackDog extends Dog {
public void sound() {} // ERROR
}
Que fait final sur une classe ?
La classe est non héritable et immuable. public final class Cat, ne peut pas être extends dans une autre classe.public class BlackCat extends Cat => ERROR, mais les objets de cette classe ne sont pas immuables.
Que fait final dans un paramètre ?
method(final f) {}
Un paramètre final ne peut pas être changé à l’intérieur d’une méthodepublic void methodWithFinalArguments(final int x) {
x=1; // ERROR
}
Qu’est-ce qu’un objet mutable et un objet immuable ?
Objet mutable : Les états et les champs sont modifiables après la création de l’objet. Exemple : StringBuilder, java.util.Date, etc.
Objet immuable : Objet non modifiable après la création de l’objet. Exemple: String, objets primitifs en boîte comme Integer, Long, etc.
Différence entre String, StringBuilder et StringBuffer
String : immuable.StringBuilder : mutable, non thread-safe.StringBuffer : mutable et thread-safe.
Qu’est-ce qu’une exception et différence avec erreur ?
Une exception est un événement imprévu pendant l’exécution d’un programme, gérable via des blocs try-catch, tandis qu’une erreur est un problème grave, souvent non contrôlable, indiquant un dysfonctionnement sérieux.
Différence entre checked et unchecked exceptions
Checked : doivent être déclarées ou catchées, héritent de IOException.
ex : FileNotFoundException
Unchecked : exception non vérifiée en Java qui survient pendant l’exécution du programme, héritent de RuntimeException.
ex : NullPointerException.
Que fait try-with-resources ? (Java 7)
try (PrintWriter writer = new PrintWriter(new File("test.txt"))) {
writer.println("Hello World");
}.
Permet de faire un try avec une ressource implémentant AutoCloseable et ainsi automatiquement fermé, la ressource déclarée à l’intérieur du try.
Comment écrire le code suivant avec un try-with-resources ?
Scanner scanner = null;
try {
scanner = new Scanner(new File(“test.txt”));
while (scanner.hasNext()) { System.out.println(scanner.nextLine()) }
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
if (scanner != null) { scanner.close(); }
}
try (Scanner scanner = new Scanner(new File(“test.txt”))) {
while (scanner.hasNext()) { System.out.println(scanner.nextLine()); }
} catch (FileNotFoundException fnfe) {
fnfe.printStackTrace();
}
Différence entre break et continue
break : quitte la boucle.continue : passe à l’itération suivante.
Différence entre for, while et do-while
for : boucle avec compteur.for(initialization; condition; iteration) {}while : teste avant exécution.while (expression-boolean) {}do-while : teste après exécution, le bloc do est toujours exécuté au moins une fois.do {} while (expression-boolean);
Différence entre == et instanceof
== : compare références (ex : a == b)instanceof : teste si objet est d’un type. (ex : ring instanceof Round)
Différence entre public, protected, default, private
Public : accessible partout
Protected : accessible dans le package et sous-classes
Default : accessible dans le package
Private : accessible dans la classe uniquement.
Qu’est-ce qu’un package et pourquoi l’utiliser ?
Organisation logique de classes, évite les conflits de noms et facilite la maintenance.
Qu’est-ce que l’encapsulation ?
Cacher les détails internes en les déclarant privées et exposer uniquement ce qui est nécessaire via getters/setters.
Qu’est-ce que l’héritage ?
Une classe peut réutiliser champs et méthodes d’une autre classe avec extends.
(class Car extends Vehicle {})
Qu’est-ce que le polymorphisme ?
Une même méthode peut se comporter différemment selon l’objet avec un override (surcharge et redéfinition).
Différence entre overloading et overriding
Overloading : même nom, paramètres différents.public int multiply(int a, int b) { return a * b; }public double multiply(double a, double b) { return a * b; }
Overriding : même signature, réécriture dans sous-classe.public class Car extends Vehicle {
@Override
public String accelerate(long mph) {
return "The car is at : " + mph + " MPH.";
}}