:: Enseignements :: Licence :: L3 :: 2009-2010 :: Programmation Objet avec Java ::
[LOGO]

String, StringBuilder, egalité, et expression régulière.


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 veux tester le contenu des chaînes de caractère ?
  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 prisent en argument séparé 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 l'objet java.lang.StringBuilder
    Pouquoi sa méthode append(String) renvoie un obejt 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 l'assembleur 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 - Pattern Matching

Le but de cette exercice est la manipulation d'expression régulière en Java. Nous utiliserons pour cela les classes du paquetage java.util.regex.

  1. A quoi sert la classe java.util.regex.Pattern et sa méthode compile ?
    A quoi sert la classe java.util.regex.Matcher ?
  2. Ecrire un programme qui lit des chaines de caractères sur la ligne de commande et affiche les chaines qui correspondent à des nombres. C'est à dire les chaines dont tous les caractères sont compris entre '0' et '9'.
  3. Modifier le programme pour que si une chaine de caractère commence par des caractères qui ne sont pas des chiffres, ceux-ci ne soit pas pris en compte.
  4. Ecrire une méthode qui prend en paramètre une chaine de caractère contenant une adresse IPv4 et renvoie un tableau de 4 bytes.
    Vous utiliserez pour cela la notion de groupe.