:: Enseignements :: ESIPE :: E3INFO :: 2012-2013 :: Programmation Objet avec Java ::
[LOGO]

String, StringBuilder, égalité.


Exercice 1 - Egalité, Redéfinition, Polymorphisme, Liaison tardive (late binding).

  1. Qu'affiche le code suivant :
           String s1="toto";
           String s2=s1;
           String s3=new String(s1);
    
           System.out.println(s1==s2);
           System.out.println(s1==s3);
         
    Expliquer
  2. Quelle est la méthode à utiliser pour tester le contenu des chaînes de caractères ?
  3. Qu'affiche le code suivant :
          String s1="toto";
          String s2="toto";
    
          System.out.println(s1==s2);
         
    Expliquer.
  4. Expliquer pourquoi il est important que java.lang.String soit non mutable.
  5. Qu'affiche le code suivant :
          String s="hello";
          s.toUpperCase();
          System.out.println(s);
         
    Expliquer.

Exercice 2 - En morse. Stop.

Ecrire une classe fr.umlv.morse.Morse qui permet lors de son exécution d'afficher les chaînes de caractères passées en argument séparées par des "Stop.".
      $ java Morse ceci est drole
      ceci Stop. est Stop. drole Stop.
    
  1. Utiliser dans un premier temps, l'opérateur + qui permet la concaténation de chaînes de caractères.
  2. A quoi sert un objet de la classe java.lang.StringBuilder
    Pouquoi sa méthode append(String) renvoie un objet de type StringBuilder ?
  3. Ré-écire la classe fr.umlv.morse.Morse en utilisant un StringBuilder.
    Quel est l'avantage par rapport à la solution précédente ?
  4. Recopier le code suivant dans une classe de Test :
           public static void main(String[] args) {
             String first=args[0];
             String second=args[1];
             String last=args[2];
             System.out.println(first+' '+second+' '+last);
           }
          
    Compiler le code puis utiliser la commande javap pour afficher le bytecode généré
           javap -c Test
          
    Que pouvez vous en déduire ?
    Dans quel cas doit-on utiliser StringBuilder.append() plutôt que le + ?

Exercice 3 - Redéfinition

  1. Quelles sont les valeurs affichées par le main de la classe Test ? Expliquer pourquoi.
  2. En se plaçant dans B, à combien de méthodes x une méthode de B a t-elle accès ? S'il y en a plusieurs, donner pour chacune un moyen d'accès.
  3. Mêmes questions, mais en se plaçant dans Test.
  4. Que se passe t il si les x() sont des méthodes statiques.
  5. Que se passe t il si les x sont des champs.

Exercice 4 - Surcharge, redéfinition, appel de méthode

Dans les exemples de classes suivantes :
  • Dire où se trouvent les erreurs de compilation.
  • Expliquer ces erreurs.
  • Retirer les méthodes qui provoquent ces erreurs.
  • Indiquer où se trouvent les surcharges et les redéfinitions.
  • Indiquer les méthodes appellées.