EXERCICES 1 :
Ce programme affiche : s1 and s2 are different objects s1 and s2 have the same value
Le test s1 == s2 donne false car il compare les références des objets et non leurs valeurs. La création de s2 avec l'opérateur new crée un nouvel objet String distinct de s1.
En Java, l'opérateur == compare les références des objets, c'est-à-dire les adresses mémoire. La méthode equals() compare le contenu des objets en utilisant la méthode equals() définie dans la classe de l'objet.
EXERCICES 2 :
Le rôle de cette classe est de représenter un animal et de fournir une méthode pour produire un son générique.
Le mot-clé protected devant la variable name signifie qu'elle est accessible à la fois dans la classe Animal et dans ses sous-classes, mais pas en dehors de celles-ci.
Voici la sous-classe Dog :
public class Dog extends Animal {
public Dog(String name) {
super(name);
}
@Override
public String makeSound() {
return "Woof";
}
}
La classe Dog hérite de la classe Animal et redéfinit la méthode makeSound() pour retourner "Woof".
EXERCICES 3 :
Le rôle de cette classe est de représenter une paire de clé-valeur.
Les types génériques K et V servent à définir les types des clés et des valeurs stockées dans la paire, qui peuvent être de types différents.
Voici la méthode printPair :
public static void printPair(Pair<?, ?> pair) { System.out.println("Key: " + pair.getKey() + ", Value: " + pair.getValue()); }
Cette méthode prend en paramètre un objet Pair dont les types de clé et de valeur peuvent être différents, d'où l'utilisation des types génériques "?". La méthode affiche la clé et la valeur à l'écran.