Page d'accueilFindIt !ContactCréation et utilisation des classesLes instructions et les opérateurs

Le langage JavaTM

Table des matièresHierarchie des classes

CJava

 Objets, tableaux et chaînes de caractères

La classe Object
La classe Class
Les tableaux
Les chaînes de caractères
La classe String
La classe StringBuffer
La classe System

 

Ce chapitre présente les principales classes du package java.lang et comment utiliser les tableaux en Java.

La classe Object

Java étant un langage pur objet, la première classe à étudier est naturellement la super classe dont héritent implicitement toute les autres (celles fournies avec Java et celles que vous créerez) : la classe Object.
Cette classe comporte un petit nombre de méthodes, dont toutes les autres classes héritent et que certaines classes dérivées peuvent éventuellement outrepasser. Les classes différentes de la classe Object utilisées par ces méthodes sont signalées par des liens et seront détaillées ultérieurement.

Constructeur

public Object ()

Méthodes

public final Class getClass ()

Renvoie la classe d'un objet. A l'exécution, chaque classe utilisée dans un programme est représentée par une instance de la classe Class.

public boolean equals (Object obj)

Renvoie true si les deux objets (l'objet sur lequel est invoqué equals () et obj) sont égaux, false sinon. Il faut entendre par égaux, s'ils désignent le même objet. Une classe doit outrepasser cette méthode, si elle veut que la signification de l'égalité entre deux objets soit moins stricte, par exemple en comparant la valeur de leurs champs.

public int hashCode ()

Renvoie un code entier utilisé pour le stockage des objets dans les tables de hash (Hashtable). Si une classe outrepasse equals (), elle doit en général outrepasser aussi hashCode () pour renvoyer le même code pour deux objets égaux par la méthode equals (). La condition inverse n'est pas obligatoire (deux objets peuvent renvoyer un code de hash identique mais être différents par la méthode equals ()).
La méthode hashCode () de la classe Object renvoie l'adresse d'un objet.

protected Object clone () throws CloneNotSupportedException

Duplique un objet. Un objet de la même classe que l'objet sur lequel on invoque clone () est créé avec une copie de toutes ses champs. Renvoie le nouvel objet.
Une exception OutOfMemoryError peut être éventuellement déclenchée en cas de mémoire insuffisante. L'exception CloneNotSupportedException est déclenchée si la classe de l'objet cloné ou une de ses super classes n'implémente pas explicitement l'interface Cloneable.
La méthode clone () est protected donc pour pouvoir dupliquer un objet objet1 de classe Classe1 par l'expression objet1.clone (), Classe1 doit outrepasser clone () avec un modificateur d'accès public. Comme toutes les classes dérivent de la classe Object, cette méthode n'est en fait utile pour les autres classes que pour créer un nouvel objet de même classe et copier la valeur de tous les champs de l'original.
Si un des champs recopiés est une référence sur un objet, seule la référence est recopiée et désignera le même objet. Donc, si vous voulez que les références clonées désignent des objets différents, vous devez cloner ces objets vous même, dans la méthode clone ().
Voici un exemple d'utilisation de clone () :

class Classe0 implements Cloneable
{
  double  unNombre;
 
  public Object clone () throws CloneNotSupportedException
  {
    // Appel de la méthode clone () de la classe Object
    return super.clone ();
  }
  // ...
}
 
class Classe1 implements Cloneable
{
  int      var;
  Classe0  objet0 = new Classe0 ();
 
  public Object clone () throws CloneNotSupportedException
  {
    // Appel de la méthode clone () de la classe Object
    // puis clonage de objet0
    Classe1 nouveau = (Classe1)super.clone ();  // cast de Object vers Classe1
    nouveau.objet0  = (Classe0)objet0.clone (); // cast de Object vers Classe0
    return nouveau;
  }
  // ...
}

Il est possible de pas déclarer l'exception CloneNotSupportedException dans la clause throws de la méthode clone () pour éviter d'obliger les utilisateurs à intercepter cette exception.

 public String toString ()

Renvoie une chaîne de caractères représentant la valeur d'un objet. Chaque classe devrait outrepasser cette méthode pour créer une chaîne représentant la valeur de leurs instances. La méthode toString () de la classe Object renvoie le nom de la classe de l'objet sur lequel on invoque cette méthode, suivi du caractère '@' et de la valeur en hexadécimal renvoyée par hashCode ().

public final void notify () throws IllegalMonitorStateException
public final void notifyAll () throws IllegalMonitorStateException
public final void wait (long millis )
        throws IllegalMonitorStateException, InterruptedException
public final void wait (long millis, int nanos)
        throws IllegalMonitorStateException, InterruptedException
public final void wait ()
        throws IllegalMonitorStateException, InterruptedException

Ces méthodes sont utilisées pour prévenir ou attendre des threads (tâches) synchronisés sur l'accès à un objet. millis désigne un nombre de millisecondes et nanos un nombre de nanosecondes. wait (0) et wait (0, 0) sont équivalentes à wait ().
Ces méthodes seront développées ultérieurement, dans le chapitre sur les threads. Notez qu'étant final, elles ne peuvent être outrepassées dans les classes dérivées.

protected void finalize() throws Throwable

Cette méthode est invoquée automatiquement avant qu'un objet soit détruit par le Garbage collector. Les classes ayant des traitements spécifiques à effectuer à la destruction d'un objet, doivent outrepasser cette méthode. La méthode finalize () de la classe Object ne fait rien. Voir aussi la destruction d'objets.

C

Toutes les classes Java héritent de la classe Object. Vous ne pouvez créer plusieurs hiérarchies de classes comme en C++.

La classe Class

Cette classe final représente chacune des classes (et des interfaces) chargées par la Machine Virtuelle Java, en faisant correspondre à chaque classe une instance de classe Class.

Méthodes

public static Class forName (String className) throws ClassNotFoundException

Renvoie un objet de classe Class correspondant à la classe ou à l'interface de nom className. className doit être un nom de classe complet avec package (comme par exemple java.lang.Object). Comme la classe Class n'a pas de constructeur public, les seules manières de récupérer une instance de classe Class sont de passer par cette méthode ou la méthode getClass () de la classe Object.

public Object newInstance () throws InstantiationException, IllegalAccessException

Crée une nouvelle instance d'une classe. Cette méthode est moins pratique que l'opérateur new pour créer des objets car il faut intercepter les exceptions InstantiationException et IllegalAccessException que peut déclencher la méthode newInstance ().
Associée à la méthode forName (), elle est par contre très utile pour instancier des objets d'une classe dont vous n'avez que le nom et qui a un constructeur sans paramètre, comme par exemple Class.forName ("java.lang.Object").newInstance () qui crée un objet de classe Object. Voir aussi la création d'objets et l'application InstantiationAvecNom.

public ClassLoader getClassLoader ()

Renvoie le chargeur de classe utilisé pour charger une classe ou null si c'est le chargeur par défaut.

public String getName ()

Renvoie le nom complet d'une classe (avec son package).

public Class getSuperclass ()

Renvoie la super classe d'une classe.

public Class [ ] getInterfaces ()

Renvoie un tableau des interfaces implémentées par une classe. Si la classe n'implémente aucune interface ce tableau a une longueur nulle (length = 0).

public boolean isInterface ()

Renvoie true ou false suivant que l'objet sur lequel cette méthode est appelée est une interface ou une classe.

public String toString ()

Cette méthode renvoie le nom de la classe ou de l'interface précédé des mots class ou interface. toString () outrepasse la méthode de la classe Object.

La méthode equals () de la classe Object n'est pas outrepassée dans cette classe car c'est inutile : Comme à chaque classe chargée par la Machine Virtuelle correspond une instance de la classe Class unique, vous pouvez comparez deux objets de classe Class directement avec l'opérateur == ou !=.

A partir de Java 1.1, cette classe a été très enrichie et comporte des méthodes qui permettent d'interroger tous les champs, les méthodes et les contructeurs d'une classe.

Les tableaux

Comme tout type qui n'est pas un type primitif, les tableaux sont des objets alloués dynamiquement.
Les éléments du tableau peuvent être d'un type primitif, d'une classe ou d'une interface, et le tableau lui-même hérite de la classe Object et de toutes ses méthodes.
Comme en C, un tableau contenant n éléments, a son premier élément à l'indice 0 et son dernier à l'indice n-1. Une référence table qui désigne un tableau peut accéder au champ length de ce tableau (table.length) pour déterminer le nombre d'éléments mémorisés dans celui-ci.

Exemple de déclarations et de créations de tableaux :

class Classe1
{
  // Déclaration de références sur des tableaux
  int [ ]       tableEntiers;
  float         tableFloats [ ]; // Les crochets peuvent être avant ou après la variable
  Object [ ]    tableObjets;
  Cloneable [ ] tableClonaeable;
 
  // Création de tableaux
  int    [ ]    tableEntiers2   = new int [5];
  Object [ ]    tableObjets2    = new Object [10];
  Cloneable [ ] tableClonaeable2 = new Cloneable [10];
 
  // Création d'un tableau de longueur nulle
  int    [ ]    tableauVide   = new int [0];
 
  // Création de tableaux initialisés
  long   [ ]    tableLongs    = {1L, 2L, 5L};
  Classe1       objet1       = new Classe1 ();
  Classe1 [ ]   tableObjets3  = {objet1, new Classe1 (), null};
  short  [ ][ ] tableShorts  = {{1, 2}, {1, 2, 3}, null, {0}};
  int    [ ]    tableauVide2  = {};   
}

A partir de Java 1.1, les méthodes static newInstance () de la classe java.lang.reflect.Array permettent aussi de créer des tableaux comme dans l'exemple suivant :

import java.lang.reflect.*;
 
public class ClasseJava11
{
  public static void main (String [] args) throws ClassNotFoundException
  {
    // Autre possibilité de création de tableaux à partir de Java 1.1
    Object   tableEntiers = Array.newInstance (int.class, 5);
    float [] tableFloats = (float [])Array.newInstance (float.class, 2);
    Object   tableObjets  = Array.newInstance (Class.forName ("java.lang.Object"), 10);
  }
} 

Un tableau peut être créé avec une longueur nulle. Quel en est l'intérêt ?

Une fois qu'un tableau est créé, sa taille ne peut être modifiée ; par contre, la classe System du package java.lang fournit la méthode arraycopy () permettant de copier une partie d'un tableau dans un autre, et la classe Vector du package java.util est idéale pour manipuler des tableaux de taille variable.

Les valeurs d'un tableau créé grâce à l'opérateur new sont initialisées à leur valeur par défaut.

Dans un soucis de sécurité, Java vérifie si les tableaux sont manipulés correctement :

Java permet de créer les tableaux multi-dimensionnels de deux manières différentes : vous pouvez créer un tableau directement avec plusieurs dimensions ou créer vous même les sous tableaux, un par un, comme dans l'exemple suivant, permettant de créer un tableau de taille dim1 x dim2 initialisé avec valeurDefaut :

class Classe1
{ 
  public int [ ][ ] methode1 (int dim1, int dim2)
  {
    int [ ][ ] table1 = new int [dim1][dim2]; // Création d'un tableau dim1 x dim2
    return table1;
  }
 
  public int [ ][ ] methode2 (int dim1, int dim2, int valeurDefaut)
  {
    int [ ][ ] table1 = new int [dim1][ ]; // Création de la première dimension
    int i, j;
 
    for (i = 0; i < dim1; i++)
    {
      table1 [i] = new int [dim2];  // Création de la deuxième dimension
      for (j = 0; j < dim2; j++)
        table1 [i][j] = valeurDefaut;
    }
 
    return table1;
  }
}

L'avantage de ce système est que vous pouvez créer des sous tableaux de dimensions différentes (pour créer un triangle de Pascal, par exemple).

Il est possible d'interroger la classe d'un tableau et le nom de cette classe, grâce aux méthodes getClass () de la classe Object et getName () de la classe Class. Ce nom est construit avec en tête autant de caractère [ que le nombre de dimensions du tableau suivi soit du caractère L, du nom de la classe ou de l'interface complet et d'un point virgule (;) si le tableau mémorise des références sur des objets, soit d'un des caractères suivant si le tableau mémorise des valeurs d'un des types primitifs :

Caractère

Type des éléments
du tableau

B

byte

C

char

D

double

F

float

I

int

J

long

L

classe ou interface

S

short

Z

boolean

Par exemple, (new Object [3]).getClass ().getName () renvoie "[Ljava.lang.Object;" et (new double [0][0]).getClass ().getName () renvoie "[[D".
Avec Java 1.0, il est impossible de créer une nouvelle instance d'un tableau, en connaissant sa classe et en utilisant la méthode newInstance () de la classe Class. Par exemple, si vous exécutez l'instruction (new int [2]).getClass ().newInstance (), une exception InstantiationException sera déclenchée.
A partir de Java 1.1, l'utilisation des méthodes static newInstance () de la classe java.lang.reflect.Array, permet de résoudre ce problème, comme dans l'exemple Array.newInstance (Class.forName ("java.lang.Object"), 5).

Les tableaux implémentent implicitement l'interface Cloneable et outrepasse la méthode clone () de la classe Object sans déclencher d'exception CloneNotSupportedException, ce qui permet de les dupliquer facilement en une instruction. Si le tableau comporte plus d'une dimension, il faut dupliquer aussi les sous-tableaux pour obtenir une copie complète, comme dans l'exemple :

class Classe1
{ 
  void methode1 ()
  {
    int [ ][ ] table = {{15, 20, 30}, 
                        { 5, 10, 15}};
 
    // Duplication de la première dimension
    int [ ][ ] tableClone = (int [][])table.clone ();
    int        i;
    for (i = 0; i < table.length; i++)
      // Duplication des sous tableaux
      tableClone [i] = (int [])table [i].clone ();
  }
}

!

La création d'un tableau de n objets ne crée pas n instances pour les n éléments du tableau, mais uniquement n références à des objets. C'est à vous d'affecter chacune de ces références, soit à un nouvel objet à créer, soit à un objet existant.
De même, la duplication d'un tableau de n objets avec la méthode clone () de la classe Object, ne crée aucune copie des objets qu'il contient.


C

Les tableaux sont une sorte de classe final (pas dérivable) en Java. Ils sont d'un abord plus simple qu'en C, langage dans lequel ils peuvent être utilisés comme des pointeurs, ce qui sème souvent la confusion chez les débutants.

C

Les tableaux Java sont alloués dynamiquement. Ils comportent un champ length indiquant le nombre d'éléments du tableau et Java vérifie les dépassements d'indice quand on accède à un élément.

C

Les tableaux étant des objets, il est possible de créer des tableaux de longueur nulle. L'instruction Object [ ] table = { }; crée un tableau qui ne contient aucun objet et qui est désigné par la référence tab. Par contre l'instruction Object [ ] table = null; initialise la référence tab à null sans créer d'objet.

C

L'accès aux tableaux étant en Java, bien protégé par les exceptions, l'impossibilité de pouvoir surcharger l'opérateur [ ], comme en C++, ne s'avère pas si importante.

Les chaînes de caractères

Les chaînes de caractères sont représentées en Java par les classes String ou StringBuffer. Ces deux classes ne jouent pas exactement le même rôle :

Toutes les chaînes de caractères Java mémorisent des caractères de type char, donc des caractères Unicode codés sur 16 bits.

Les objets de classe String peuvent être initialisés directement avec une chaîne de caractères, sans passer par le constructeur :

class Classe1
{
  // Deux manières différentes de créer un objet
  // de classe String avec la chaîne "Bonjour" 
  String chaine1 = "Bonjour";
  String chaine2 = new String ("Bonjour");
}

La classe String

La classe String qui est final comporte de nombreuses méthodes. En voici la liste (quelques méthode mineures ont été ajoutées à partir de Java 1.1) :

Constructeurs

public String (String value)

Construit une nouvelle chaîne qui est la copie de value.

public String (char value [ ])

Construit une nouvelle chaîne initialisée avec la suite de caractères données dans le tableau value.

public String (byte ascii [ ], int hibyte)

Construit une nouvelle chaîne initialisée avec la suite d'octets donnée dans le tableau ascii ; chaque caractère ASCII du tableau ascii est transformé en un caractère Unicode, en utilisant hibyte pour la partie haute du caractère.
Autres constructeurs :

public String ()
public String (char value [ ], int offset, int count)
                  throws IndexOutOfBoundsException
public String (byte ascii [ ], int hibyte, int offset, int count)
                  throws IndexOutOfBoundsException
public String (StringBuffer buffer)

Méthodes

public int length ()

Renvoie la longueur de la chaîne, c'est à dire le nombre de caractères Unicode de la chaîne.

public char charAt (int index)

Renvoie le caractère à l'indice index (index est compris entre 0 et length () - 1).

public void getChars (int srcBegin, int srcEnd, char dst [ ], int dstBegin)
                          throws IndexOutOfBoundsException
public void getBytes (int srcBegin, int srcEnd, byte dst [ ], int dstBegin)
                          throws IndexOutOfBoundsException
public char [ ] toCharArray ()

Ces méthodes permettent de récupérer dans le tableau dst les caractères de la chaîne, de l'indice srcBegin jusqu'à srcEnd (non compris).

public int hashCode ()

Cette méthode outrepasse la méthode hashCode () de la classe Object, pour renvoyer un code différent si deux chaînes de caractères sont différentes.

public boolean equals (Object anObject)

Cette méthode outrepasse la méthode equals () de la classe Object, pour renvoyer true si anObject est de la classe String, et si les deux chaînes de caractères sont les mêmes.

public boolean equalsIgnoreCase (String anotherString)

Comme equals () mais la comparaison est faite sans tenir compte des majuscules/minuscules des chaînes comparées.

public int compareTo (String anotherString)

Compare une chaîne de caractères avec anotherString. Renvoie une valeur négative, nulle, ou positive suivant que la chaîne de caractère est respectivement plus petite, égale ou plus grande que anotherString.

public boolean regionMatches (int toffset, String other, int ooffset, int len)
public boolean regionMatches (boolean ignoreCase, int toffset,
                                String other, int ooffset, int len)
public boolean startsWith (String prefix, int toffset)
public boolean startsWith (String prefix)
public boolean endsWith (String suffix)

Ces méthodes permettent de comparer une partie d'une chaîne de caractères à une autre (entre deux indices, au début ou à la fin).

public int indexOf (int ch)
public int indexOf (int ch, int fromIndex)
public int lastIndexOf (int ch)
public int lastIndexOf (int ch, int fromIndex)
public int indexOf (String str)
public int indexOf (String str, int fromIndex)
public int lastIndexOf(String str)
public int lastIndexOf (String str, int fromIndex)

Renvoient l'indice de la première ou la dernière occurrence d'un caractère ch ou d'une chaîne str dans une chaîne de caractères, ou -1 si aucune occurrence n'a pas été trouvée.

public String substring (int beginIndex)
public String substring (int beginIndex, int endIndex)

Renvoient une sous-chaîne d'une chaîne de caractères, à partir de l'indice beginIndex ou entre les deux indices beginIndex et endIndex (endIndex exclu).

public String concat (String str)

Renvoie la chaîne, résultat de la concaténation de str à la fin d'une chaîne de caractères.

public String replace (char oldChar, char newChar)

Renvoie une chaîne où tous les caractères oldChar sont convertis en newChar.

public String toLowerCase ()
public String toUpperCase ()

Renvoie une chaîne où tous les caractères majuscules sont convertis en minuscules, et inversement.

public String trim ()

Renvoie une chaîne où tous espaces en tête et en queue d'une chaîne de caractères sont supprimés.

public static String valueOf (char data [ ])
public static String valueOf (char data [ ], int offset, int count)
                                  throws IndexOutOfBoundsException

Ces méthodes permettent de créer des chaînes de caractères à partir de tableaux de caractères.

public static String valueOf (Object obj)

Renvoie une chaîne représentant la valeur de obj sous forme de chaîne de caractères. En fait, équivalent à obj.toString ().

public static String valueOf (boolean b)
public static String valueOf (char c)
public static String valueOf (int i)
public static String valueOf (long l)
public static String valueOf (float f)
public static String valueOf (double d)

Renvoie une chaîne de caractères correspondant à la valeur des types par défaut (voir aussi les classes Integer, Long, Float et Double qui fournissent des méthodes pour convertir un nombre en une chaîne de caractères et inversement).

public String intern ()
 
public String toString ()

Méthode de la classe Object, outrepassée pour qu'elle renvoie la chaîne de caractères.

La classe StringBuffer

La classe StringBuffer contrairement à la classe String, utilise un buffer de taille variable pour mémoriser une chaîne de caractères modifiables. Cette classe final maintient elle-même l'allocation d'espace supplémentaire pour mémoriser des caractères supplémentaires. Voici la liste des méthodes de cette classe :

Constructeurs

public StringBuffer ()

Construit une chaîne vide.

public StringBuffer (int length) throws NegativeArraySizeException

Construit une chaîne vide, avec une taille initiale length.

public StringBuffer (String str)

Construit une chaîne initialisée avec la chaîne str.

Méthodes

public int length ()

Renvoie le nombre de caractères mémorisés dans de la chaîne.

public int capacity ()

Renvoie la capacité courante de la chaîne, représentant le nombre de caractères qu'il est possible d'insérer, avant qu'il ne soit alloué de l'espace supplémentaire.

public synchronized void ensureCapacity (int minimumCapacity)

Permet de s'assurer, que la chaîne à une capacité d'au moins minimumCapacity caractères supplémentaires.

public synchronized void setLength (int newLength)
                             throws IndexOutOfBoundsException

Modifie la taille de la chaîne. Si la chaîne actuellement mémorisée est plus longue, elle sera tronquée. Les caractères éventuellement ajoutés sont nuls ('\u0000'), pour que length () renvoie la valeur newLength.

public synchronized char charAt (int index)
                             throws IndexOutOfBoundsException

Renvoie le caractère mémorisé à l'indice index (valeur comprise entre 0 et length () - 1).

public synchronized void getChars (int  srcBegin, int srcEnd,
                                    char dst [ ],  int dstBegin)
                         throws IndexOutOfBoundsException

Copie à l'indice dstBegin du tableau dst les caractères compris entre les indices srcBegin et srcEnd.

public synchronized void setCharAt (int index, char ch)
                         throws IndexOutOfBoundsException

Change par ch le caractère à l'indice index de la chaîne.

public synchronized StringBuffer append (Object obj)
public synchronized StringBuffer append (String str)
public synchronized StringBuffer append (char str [ ]) 

Ajoute en fin de chaîne un objet, une chaîne ou un tableau de caractères.

public synchronized StringBuffer append (char str [ ],
                                         int beginIndex, int length)
                    throws IndexOutOfBoundsException

Ajoute en fin de chaîne les caractères du tableau str, compris entre beginIndex et beginIndex + length - 1.

public synchronized StringBuffer append (char c)
public StringBuffer append (boolean b)
public StringBuffer append (int i)
public StringBuffer append (long l)
public StringBuffer append (float f)
public StringBuffer append (double d)

Ajoute en fin de chaîne la valeur d'un type primitif convertie en chaîne.

public synchronized StringBuffer insert (int offset, Object obj)
                 throws IndexOutOfBoundsException
public synchronized StringBuffer insert (int offset, String str)
                 throws IndexOutOfBoundsException
public synchronized StringBuffer insert (int offset, char str [ ])
                 throws IndexOutOfBoundsException

Insère à l'indice offset d'une chaîne un objet, une chaîne ou un tableau de caractères.

public synchronized StringBuffer insert (int offset, char c)
                                  throws IndexOutOfBoundsException
public StringBuffer insert (int offset, boolean b)
                                  throws IndexOutOfBoundsException
public StringBuffer insert (int offset, int i)
                                  throws IndexOutOfBoundsException
public StringBuffer insert (int offset, long l)
                                  throws IndexOutOfBoundsException
public StringBuffer insert (int offset, float f)
                                  throws IndexOutOfBoundsException
public StringBuffer insert (int offset, double d)
                                  throws IndexOutOfBoundsException

Insère à l'indice offset d'une chaîne la valeur d'un type primitif convertie en chaîne.

public synchronized StringBuffer reverse ()

Inverse les caractères d'une chaîne.

public String toString ()

Méthode de la classe Object, outrepassée pour qu'elle renvoie la chaîne de caractères mémorisée.

!

Les méthodes append (), insert () et reverse () renvoie l'objet de classe StringBuffer lui-même, une fois modifié.

La classe System

Cette classe final permet d'accéder à différentes fonctionnalités du système de la Machine Virtuelle Java, et comporte plusieurs champs et méthodes très utiles.
Tous les champs et les méthodes de cette classe sont static.
Les champs in, out et err permettent de sortir ou de lire sur l'entrée et la sortie standard ; out est particulièrement pratique pour imprimer des chaînes au moment du debug des applications Java avec java, ou des applets avec appletviewer ou avec certains navigateurs (Microsoft Internet Explorer et Netscape Navigator vous permettent d'afficher la fenêtre de sortie standard Java dans la fenêtre console Java).
Alors, n'hésitez pas à utiliser out pour vérifier les variables ou les points de passage d'un programme (par exemple en appelant System.out.println ()), surtout si vous cherchez les bugs dans un programme multi-threads, situation où il est difficile de positionner des points d'arrêts (breakpoints).

Champs

public static InputStream in

Entrée standard pour saisir des caractères.

public static PrintStream out

Sortie standard pour écrire des messages.

public static PrintStream err

Sortie standard des erreurs pour écrire des messages d'erreurs.

Méthodes

public static void arraycopy (Object source, int srcOffset,
                                Object dest, int dstOffset, int length)
                           throws ArrayStoreException,
                                  IndexOutOfBoundsException

Copie les length éléments du tableau source à partir de l'indice srcOffset dans le tableau dest à l'indice dstOffset.
Si les tableaux source et dest désignent le même tableau, le traitement effectué permet d'éviter que certaines informations soient perdues (au cas où les intervalles se recouvrent).
Une exception ArrayStoreException est déclenchée s'il n'est pas possible de stocker un élément de source dans dest avec un cast implicite.

public static long currentTimeMillis ()

Renvoie le temps courant en millisecondes écoulé depuis le 1er Janvier 1970.

public static void exit (int status) throws SecurityException

Quitte la Machine Virtuelle Java avec le code de sortie status.

public static void gc ()

Lance volontairement le Garbage Collector.

public static void runFinalization ()

Permet volontairement d'appeler la méthode finalize () des objets qui ne sont plus référencés.

public static SecurityManager getSecurityManager ()
public static void setSecurityManager (SecurityManager s)
                               throws SecurityException

Permet d'obtenir ou de changer le gestionnaire de sécurité. setSecurityManager () ne peut être appelé qu'une seule fois.

public static String getProperty (String property) throws SecurityException
public static String getProperty (String property, String default)
                               throws SecurityException

Permet d'obtenir une des propriétés du système (si le gestionnaire de sécurité le permet). Si la propriété property n'existe pas, default est renvoyée.
Voici la liste des différentes propriétés définies dans Java 1.0 :
java.version, java.vendor, java.vendor.url, java.home, java.class.version, java.class.path
os.name, os.arch, os.version
file.separator, path.separator, line.separator
user.name, user.home, user.dir

Les valeurs par défaut des propriétés du système peuvent être modifiées directement au lancement de la Machine Virtuelle en utilisant une ou plusieurs options -Dpropriete=valeur avec la commande java.

public static Properties getProperties () throws SecurityException
public static void setProperties (Properties props) throws SecurityException

Permet d'obtenir ou de modifier toutes les propriétés du système.

public static void load (String filename)
                           throws SecurityException, UnsatisfiedLinkError
public static void loadLibrary (String libname)
                           throws SecurityException, UnsatisfiedLinkError

Permet de charger un fichier de code ou une librairie (qui implémentent par exemple des méthodes native d'une classe).

A partir de Java 1.1, cette classe déclare notamment les méthodes setIn (), setOut () et setErr () qui permettent de rediriger l'entrée et les sorties standards.

L'application suivante vous permet d'avoir un aperçu des propriétés courantes de votre Machine Virtuelle. Recopiez la dans un fichier SystemProperties.java, que vous compilez avec l'instruction javac SystemProperties.java pour ensuite l'exécuter avec java ou Java Runner, grâce à l'instruction java SystemProperties :

public class SystemProperties
{
  public static void main (String [ ] args)
  {
    System.getProperties ().list (System.out); 
  }  
}

Page d'accueilFindIt !ContactCréation et utilisation des classesLes instructions et les op&eacute;rateursDébut de la page
© Copyrights 1997-2023 Emmanuel PUYBARET / eTeks
- Tous droits réservés -
Table des matièresHiérarchie des classes