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

String, StringBuilder, égalité.


Exercice 1 - Assignation, égalité, référence

  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 si l'on veut 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.
    Quelle 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 utilise 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 + ?