Le package java.lang

Ces classes ne nécessitent pas d'instruction import.


6.1 La classe Math

Cette classe contient des méthodes de calcul sur les entiers et les réels conformes à la norme IEEE 754 ce qui assure leur portabilité sur les clients.
Elle contient également des approximations (en double) de e et de p.

Toutes les méthodes doivent être préfixées par le nom de la classe.

Les fonction abs( x )min(x,y) et max(x,y ) admettent les types int, long, float et double comme arguments.

Les fonctions trigonométriques, exponentielle, logarithme et puissance utilisent uniquement des doubles comme arguments. Si on utilise des arguments illégaux, les méthodes de la classe Math génèrent une exception. Elles retournent NaN (Not a Number).

6.1.1 Fonctions trigonométriques

Ces fonctions travaillent toujours sur des valeurs en radians. On trouve les fonctions :
sin (double) : sinus de l'argument exprimé en radian
cos (double) : cosinus
tan (double) : tangente
asin(double) : arc sinus (valeur dans l'intervalle [-p / 2, + p / 2])
acos(double) : arc cos (valeur dans l'intervalle [0, + p]
atan (double) : arc tangente (valeur dans l'intervalle [-p / 2, + p / 2])
atan2(double) : cette dernière fonction retourne la valeur (en radians) de l'angle théta des coordonnées polaires (r et théta) du point correspondant aux coordonnées cartésiennes qui sont passées comme arguments.

6.1.2 Autres fonctions

exp (double) : exponentielle
log (double) : logarithme népérien
sqrt (double) : racine carrée
pow (double, double) : élévation du premier argument à la puissance dont la valeur est le second argument. Si le premier argument est nul, le second doit être strictement positif. Si le premier argument est strictement négatif, le second doit être une valeur entière.
random (génération à chaque appel d'un nombre pseudo-aléatoire compris entre 0 et 1.0).
              (Il existe également dans le package java.util une classe Random qui permet une gestion plus complète des nombres aléatoires.)
On dispose aussi de trois méthodes pour les arrondis : ceil (arrondi à l'entier supérieur), floor (arrondi à l'entier inférieur), round (arrondi par rapport à 0,5). Ces trois méthodes admettent des "double" comme arguments et elles retourne un double sans partie décimale et non pas un entier. round admet aussi des arguments de type "float" auquel cas la valeur retournée est du type "int".

6.2 Les classes "enveloppes"

Selon les auteurs ces classes sont aussi nommées types composites ou wrappers.
En plus des types simples boolean, byte, char, double, float, short, int, long , il existe en JAVA des classes enveloppes Boolean, Character, Double, Float, Integer, Long, Number (une classe abstraite) et String. qui concernent des objets. Ces classes ont principalement été développées pour effectuer des conversions de types. Alors que les types simples sont manipulables avec les opérateurs du langage, les objets des classes enveloppes sont accessibles par des méthodes et nécessitent l'usage d'un constructeur.

Beaucoup de ces méthodes sont déclarées static (méthodes de classe) et leurs noms doivent de préférence être préfixés par le nom de la classe. Les quelques méthodes d'instance doivent être préfixées par le nom de la variable d'instance.

 6.2.1 Classe Integer

Voici la description des méthodes les plus utilisées de cette classe :
Constructeur : On définit un objet Integer à partir d'un entier (int) ou d'un objet String.
int i = 10;
String s = "10";
Integer I = new Integer(i);
Integer J = nex Integer(s);

doubleValue( ) : méthode d'instance qui permet de convertir un objet Integer en double.
floatValue( ) : méthode d'instance qui permet de convertir un objet Integer en float.
intValue( ) : méthode d'instance qui permet de convertir un objet Integer en int.
parseInt( ) : méthode de classe qui convertit une chaîne en entier de type int.
valueOf ( ) : méthode de classe qui convertit le premier argument (chaîne) en un objet Integer dans la base de numération donnée par le second argument. Si la base est omise la conversion est faite en base 10.
toString ( ) : méthode de classe qui convertit le premier argument (objet Integer) en une chaîne dans la base de numération donnée par le second argument. Si la base est omise la conversion est faite en base 10.
toBinaryString ( ) : méthode de classe qui convertit un objet Integer en une chaîne dans la base 2. [analogue à toString(I , 2)] 

On trouvera dans le listing suivant des exemples d'application de ces méthodes.

    import java.applet.*;
    import java.awt.*;
    public class wrapper extends Applet
    {  String s,sd;
       Integer I;
       int i,j;
       double d;

    public void init()
    { setBackground(Color.lightGray);}

    public void paint(Graphics g)
    { s="E1A";        sd="65";
      I=Integer.valueOf(s,16);
// en Integer (méthode de classe)
      i=I.intValue();         
// entier (méthode d'instance)
      g.drawString(s+" => "+i, 10, 20);
      i=Integer.valueOf(s,16).intValue();
//en une seule fois
      g.drawString(""+i, 10, 35);
      d=Integer.valueOf(sd).doubleValue();
//en double
      g.drawString("d = "+d, 10, 50);
      i=Integer.parseInt(sd);       
//chaîne en entier
      g.drawString("i = "+i, 10, 65);
      s=Integer.toString(100,8);    
//entier en chaîne,base 8.
      g.drawString("s = "+s, 10, 80);
      s=Integer.toString(100);      
//entier en chaîne,base 10.
      g.drawString("s = "+s, 10, 95);
      s=Integer.toBinaryString(21);
      g.drawString("21 => "+s, 10, 110);}
      }

 La classe Long possède des méthodes analogues. Consulter la documentation de votre version JAVA.

6.2.2 Classe Double

Constructeur : on définit un objet Double à partir d'un réel (double) ou d'une chaîne.
intValue( ) , floatValue( ) , longValue( ) et doubleValue ( ) sont des méthodes d'instance qui permettent de convertir un objet Double en int, float, long ou double.
valueOf ( ) : méthode de classe qui convertit une chaîne en un objet Double.
Cette méthode peut être combinée avec la méthode doubleValue( ) pour convertir une chaîne en double.
d = Double.valueOf(s).doubleValue( ); la partie soulignée assure la conversion de la chaîne en Double, la seconde partie de l'instruction assure la conversion du Double en double.
toString ( ) : méthode de classe qui convertit un objet Double en une chaîne.
doubleToLongBits ( ) : méthode de classe qui convertit un double en sa représentation binaire au format IEEE. longBitsToDouble( ) assure la conversion inverse.

On trouvera dans le listing suivant des exemples d'application de ces méthodes.

    import java.applet.*;
    import java.awt.*;

    public class wrapperD extends Applet
    {  String s;
       double d;
       int i;

    public void init()
    { setBackground(Color.lightGray);}

    public void paint(Graphics g)
    { d=Math.PI;
      
Double D = new Double(d);
      g.drawString("D = "+d, 10, 20);
      i=D.intValue();      
// conversion en entier
      g.drawString("i = "+i, 10, 35);
      s="52.23";
      d=Double.valueOf(s).doubleValue();
//chaîne en double
      g.drawString("d = "+d, 10, 50);
      d = 1.25;

      
long bin = Double.doubleToLongBits(d);
      g.drawString("bin = "+bin, 10, 65);
//représentation IEEE
      d = Double.longBitsToDouble(bin);
      g.drawString("d = "+d, 10, 80);
//conversion inverse
      s=Double.toString(d);      
//conversion double vers chaîne
      g.drawString("s = "+s, 10, 95);}
   }

 La classe Float possède des méthodes analogues. Consulter la documentation de votre version JAVA.

6.2.3 Classe Character

Constructeur : Le constructeur convertit un char en Character..
charValue ( ) : méthode d'instance qui convertit un Character en char.
toString ( ) : méthode de classe qui convertit un objet Character en chaîne.
digit( ) : méthode de classe qui retourne la valeur numérique du Character passé comme premier argument en utilisant le second argument comme base de numération [bases de 2 (MIN_RADIX) à 36 (MAX_RADIX)]. Si la conversion est impossible, la méthode retourne -1.
forDigit( ) : méthode de classe qui retourne le char correspondant à l'entier passé comme premier argument en utilisant le second argument comme base de numération (bases de 2 à 36). Si la conversion est impossible, la méthode retourne le char null.
isDigit( ), isLowercase( ), isUpperCase( ), isSpace( ) sont des méthodes de classes booléennes qui testent si le char passé en argument est un chiffre, une minuscule, une majuscule ou un espace.
toLowerCase( ) et toUpperCase( ) : méthodes de classe qui modifient si nécessaire la casse du char passé en argument.
 On trouvera dans le listing suivant des exemples d'application de ces méthodes.

    import java.applet.*;
    import java.awt.*;

    public class wrapperC extends Applet
    {  char c = 'k';
       Character C = new Character(c);
       String s;

    public void init()
    { setBackground(Color.lightGray);}

    public void paint(Graphics g)
    { c=C.charValue();
      g.drawString("c = "+c, 10, 20);
      s=C.toString();
      g.drawString("s = "+s, 10, 35);
      int i =Character.digit('e',16);
      g.drawString("e => "+i+" en base 16", 10, 50);
      i =Character.digit('e',8);
      g.drawString("e => "+i+" en base 8", 10, 65);
      c=Character.forDigit(11,16);
      g.drawString("11 => "+c, 10, 80);
      boolean test=Character.isDigit('A');
      g.drawString("test A "+test, 10, 95);
      boolean test=Character.isDigit('9');
      g.drawString("test 9 "+test, 10, 110);}
   }

 6.3 La classe String

Une chaîne est une suite de caractères placés entre deux guillemets ( " ).
Les chaînes String ont une longueur fixe : toute nouvelle affectation d'une chaîne existante entraîne la création par le compilateur d'une nouvelle chaîne dans un emplacement mémoire différent. Si les chaînes String sont faciles à utiliser, elles ne génèrent pas un code efficace. La classe StringBuffer plus lourde à mettre en oeuvre crée un code bien plus efficace que les String.
Contrairement aux autres objets JAVA, il n'est pas nécessaire d'utiliser new pour construire une chaîne String.
Les codes String s = "ABCDE"; et String s = new String("ABCDE"); sont équivalents.
Examinons quelques méthodes utiles de cette classe :

length ( ) : méthode d'instance qui retourne la longueur de la chaîne.
charAt ( ) : méthode d'instance qui retourne le char qui occupe dans la chaîne s la position précisée par l'argument. Le premier caractère occupe la position 0 et le dernier la position s.length( ) -1.
concat( ) : cette méthode d'instance concatène la chaîne passée comme argument à la chaîne utilisée comme préfixe. Pour concaténer deux chaînes il est plus simple d'utiliser le signe +.
equals( ) : méthode booléenne d'instance qui compare la chaîne passée comme argument à la chaîne utilisée comme préfixe.
Attention on ne peut pas comparer l'égalité de deux chaînes avec "= = ". Pour comparer s1 et s2 il faut utiliser if (s1.equals(s2)) et non pas if (s1 == s2)
indexOf( ) : méthode d'instance qui retourne la position de la première occurrence du char passée comme argument dans la chaîne utilisée comme préfixe. La méthode retourne -1 si le caractère n'existe pas. La même méthode existe avec deux arguments, le second indique ou commencer la recherche. Les mêmes méthodes existent également avec comme premier argument une sous-chaîne de caractères. Les quatre formes de cette méthode existent également pour la méthode analogue lastIndexOf( ) qui retourne la position de la dernière occurrence de la partie cherchée.
substring ( ) : cette méthode d'instance permet d'extraire une sous-chaîne de la chaîne utilisée comme préfixe. Dans la première syntaxe, la recherche commence à partir de la valeur passée comme argument. Dans la seconde, la recherche s'effectue entre les deux valeurs passées en arguments.
toLowerCase( ) et toUpperCase( ) : méthodes d'instance qui modifient si nécessaire la casse de la chaîne utilisée comme préfixe.
trim ( ) : méthode d'instance supprime les caractères "espace" placés en début et en fin de chaîne.
valueOf ( ) : méthodes de classe qui assurent la conversion de l'argument (booléen, char, int, double, float, double) en chaîne.
          Double.toString( ), Integer.toString( ) ... exécutent la même opération.
 Remarque : Dans la méthode drawString ( ) la conversion d'un littéral x est réalisée automatiquement en faisant suivre la chaîne initiale (qui peut être réduite à "") de + x. Cette facilité a déjà été utilisée dans toutes les applets données en exemple. 
 On trouvera dans le listing suivant des exemples d'application de ces méthodes.

import java.applet.*;
import java.awt.*;

public class chaines extends Applet
{  char c;         int i;
   String s1="chAine1",s2,sct;
   Font font;

   public void init()
   {  setBackground(Color.lightGray);
      font = new Font("Helvetica",0,11);}

   public void paint(Graphics g)
   {   g.setFont(font);
       s2 = "Exemple de chaine"; 
       g.drawString("s = "+s2, 10, 20);
       i=s2.length();
       g.drawString("longueur = "+i, 10, 35);
       c=s2.charAt(4);
// 5 ieme caractère
       g.drawString("char[4] = "+c, 10, 50);
       sct=s1.concat("_chaine2");
       g.drawString("sct = "+sct, 10, 65);
       boolean test = s1.equals(s2);
//égalité des chaînes ?
       g.drawString("s1 = s2 : "+test, 10, 80);
       i = s1.indexOf('A');
       g.drawString("position du A = "+i, 10, 95);
       i = s2.indexOf('e',4);
       g.drawString("position du e = "+i, 10, 110);
       sct = s2.substring(5);
//syntaxe 1
       g.drawString("s2 (5 à fin) = "+sct, 10, 125);
       sct = s2.substring(4,12);//
syntaxe 2
       g.drawString("s2 (4 à 12) = "+sct, 10, 140);
       sct = s1.toUpperCase();
//en majuscule
       g.drawString("s1 => "+sct, 10, 155);
       float r = 56.123f;
       sct = String.valueOf(r);
       g.drawString("r = "+sct, 10, 170);
       g.drawString("r = "+r, 10, 185);}
//directement
}

6.4 La classe StringBuffer

Lors de la création d'un objet StringBuffer, le compilateur réserve une zone mémoire supérieure à la longueur de la chaîne initiale : il est possible de modifier la chaîne sans procéder à une nouvelle allocation mémoire. On peut considérer qu'un objet StringBuffer est un tableau de caractères accessibles séparément par leurs indices [méthodes charAt( ) et setCharAt( )].
Remarques : Lors de l'usage du signe + pour réaliser la concaténation de chaînes de type String, le compilateur génére un code utilisant la méthode append ( ) de la classe StringBuffer.
Les méthodes append( )  et insert( ) admettent comme arguments tous les littéraux, des chaînes et des objets.

 On trouvera dans le listing suivant des exemples d'application des méthodes de cette classe.

    import java.applet.*;
    import java.awt.*;

    public class strbuf extends Applet
    {   char c;         int i;
        String s1,s2;
        StringBuffer sb;
        Font font;

     public void init()
     {  setBackground(Color.lightGray);
        font = new Font("Helvetica",0,11);}

     public void paint(Graphics g)
     {  g.setFont(font);
        sb = new StringBuffer("Exemple de "); 
//affectation
        g.drawString("sb1 = "+sb, 10, 20);
        sb.append("chaine");    
//concaténation
        g.drawString("sb2 = "+sb, 10, 35);
        c=sb.charAt(4);
        g.drawString("sb[4] = "+c, 10, 50);
        sb.insert(10,"xxx");    
//argument chaîne
        g.drawString("sb3 = "+sb, 10, 65);
        sb.setCharAt(10,'%');
        g.drawString("sb4 = "+sb, 10, 80);
        s1="laval";
        g.drawString("s1 = "+s1, 10, 95);
        sb=new StringBuffer(s1);
        s2=sb.reverse().toString();
//conversion en chaîne
        g.drawString("s2 = "+s1, 10, 110);
        boolean test=s1.equals(s2);  
//test d'égalité des chaînes
        g.drawString(s1+" palindrome ? "+test, 10, 125);
        i=sb.length();
        g.drawString("longueur = "+i, 10, 140);}
}


  Retour au menu