import java.io.*;
import static java.lang.System.*;   // cf. Java 5

/**
  * 'chaine3' Démo. de qq. emplois de 'StringBuilder' (cf. Java 5)
  * @author   H. Nguyen-Phu   (c) ~/2a  env.
  * @since    1.0  2006.08.14
  * @version  1.1  2006.08.20
  * @see      chaine2_
  */

public class chaine3  {

   public static void main(String args[])  {

       out.println("chaine3: D\u00e9mo. de 'insert()', 'codePointAt()'... de la classe 'StringBuilder'");
       out.println("-------  (c)~/2A env. 2006.08.20 19h18\n");
       out.println("REMARQUE: Pr\u00e9f\u00e9rer 'StringBuilder' (Java 5) \u00e0 'StringBuffer' (Java 2) pour plus d'efficacit\u00e9 !\n\n");

       StringBuilder univ = new StringBuilder();
       out.println("Capacit\u00e9 actuelle de l'objet 'univ' (vide) = "+univ.capacity() );

       univ = univ.append("Universit\u00e9 ");
       univ = univ.append("Poincar\u00e9");
       univ = univ.insert(11,"Henri ");
      
       out.println("Contenu de l'objet StringBuilder 'univ' = " + univ);
       out.println("Nouvelle capacit\u00e9 de l'objet 'univ' (<> vide) = "+univ.capacity() );
       out.println("alors que la longueur effective de la chaine  = "+ univ.length() );
     
       out.println("\nContenu de 10 i\u00e8me car. = "+ univ.charAt(9));
       out.println("Son code (Unicode 'u00e9')   = "+ univ.codePointAt(9) + "\ten d\u00e9cimal");

       out.println("Contenu du premier car. = "+ univ.charAt(0));
       out.println("Son code (Unicode 'u0055')   = "+ univ.codePointAt(0) + "\ten d\u00e9cimal");

       out.println("Contenu du second car. = "+ univ.charAt(1));
       out.println("Son code (Unicode 'u006e')   = "+ univ.codePointAt(1) + "\ten d\u00e9cimal\n");

       out.println("univ.codePointCount( 0, univ.length() ) = "+ univ.codePointCount(0, univ.length() ) );

       Character Euro = new Character('\u20ac');
       int cp = (new StringBuilder("\u20ac")).codePointAt(0);
       out.println("\nLe car. Euro '" + Euro + (Character.isLetter(Euro) ? "' est une lettre !"
                                    : "' N'est PAS une lettre de l'alphabet !")
                  );
       out.println("\nLe car. Euro '" + Euro + (Character.isSupplementaryCodePoint(cp) ? "' est un caract\u00e8re Unicode suppl\u00e9mentaire !"
                                    : "' N'est PAS un caract\u00e8re Unicode suppl\u00e9mentaire (cf. Java 5) !")
                  );
       out.println("\nLe car. Euro '" + Euro + (Character.isLowSurrogate(Euro) ? "' est un caract\u00e8re 'low-surrogate' (cf. Java 5) !"
                                    : "' N'est PAS un caract\u00e8re 'low-surrogate' (cf. Java 5) !")
                  );
       es.attente();
   }
}

