Exercice JAVA : Analyse du Code

EXECICE CORRIGE EN JAVA

EXERCICE 1 :

Soit le code Java suivant :

public class Test {
   public static void main(String[] args) {
      String s1 = "Hello World";
      String s2 = new String(s1);
      if (s1 == s2) {
         System.out.println("s1 and s2 are the same object");
      } else {
         System.out.println("s1 and s2 are different objects");
      }
      if (s1.equals(s2)) {
         System.out.println("s1 and s2 have the same value");
      } else {
         System.out.println("s1 and s2 do not have the same value");
      }
   }
}

  1. Qu'affiche ce programme ?
  2. Pourquoi le test s1 == s2 donne-t-il false ?
  3. Quelle est la différence entre == et equals() en Java ?

EXERCICE 2 :

Soit la classe suivante :

public class Animal {
    protected String name;

    public Animal(String name) {
        this.name = name;
    }

    public String makeSound() {
        return "I am an animal";
    }
}

  1. Quel est le rôle de cette classe ?
  2. Que signifie le mot-clé protected devant la variable name ?
  3. Écrivez une sous-classe Dog qui hérite de Animal et qui surcharge la méthode makeSound() pour retourner "Woof".

EXERCICE 3 :

Soit la classe suivante :

public class Pair<K, V> {
    private K key;
    private V value;

    public Pair(K key, V value) {
        this.key = key;
        this.value = value;
    }

    public K getKey() {
        return key;
    }

    public V getValue() {
        return value;
    }
}

  1. Quel est le rôle de cette classe ?
  2. À quoi servent les types génériques K et V ?
  3. Écrivez une méthode printPair qui prend en paramètre un objet Pair et affiche sa clé et sa valeur à l'écran.

Solution

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.

Aucune note. Soyez le premier à attribuer une note !

Ajouter un commentaire

Anti-spam