|
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.
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 CloneNotSupportedExceptionDuplique 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, InterruptedExceptionCes 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 ThrowableCette 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.
Toutes les classes Java héritent de la classe Object. Vous ne pouvez créer plusieurs hiérarchies de classes comme en C++.
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 ClassNotFoundExceptionRenvoie 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, IllegalAccessExceptionCré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.
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 ?
- Certaines méthodes comme getInterfaces () de la classe Class renvoie un tableau qui peut n'avoir aucun élément. Après avoir appelé une telle méthode, vous n'aurez pas à tester si la référence renvoyée est égale à null avant de lancer une boucle sur les n éléments du tableau renvoyé.
- Si table désigne un tableau de longueur nulle, on peut connaître la classe du tableau grâce à table.getClass () mais pas si table est égal à null.
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 :
- Si l'accès à un élément i (grâce à table [i]) est invalide (i < 0 ou i >= table.length), Java déclenche une exception ArrayIndexOutOfBoundsException.
- Si à la création d'un tableau, la taille requise est négative une exception NegativeArraySizeException est déclenchée.
- Si vous tentez de stocker dans un tableau un élément incompatible avec ceux du tableau, une exception ArrayStoreException est déclenchée.
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 tableauB
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.
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.
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.
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.
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 sont représentées en Java par les classes String ou StringBuffer. Ces deux classes ne jouent pas exactement le même rôle :
- String est utilisé pour représenter les chaînes de caractères constantes, qui peuvent être partagées sans risque par plusieurs threads, puisque leur contenu ne peut pas être changé.
- StringBuffer est utilisé pour les chaînes de caractères dont on veut modifier le contenu.
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"); }
"Bonjour au numéro " + 1 + " et à l'objet " + unObjet
Si unObjet est égal à null, la chaîne
de conversion est "null".
En fait, le compilateur convertit les opérateurs + utilisés
en appel aux différentes méthodes append
() de la classe StringBuffer.
La concaténation intervient aussitôt qu'un des deux opérandes de l'opérateur + est
de classe String, que ce
soit une chaîne de caractères entre guillemets "abc" ou
un objet de classe String. Pour les objets des autres classes,
utilisez la méthode toString () pour
obtenir une chaîne de caractères, et pour les variables
de type primitif utilisez les méthodes static valueOf
() de la classe String.
|
En Java, les chaînes de caractères sont représentées par deux classes, l'une String pour les chaînes constantes, l'autre StringBuffer pour les chaînes modifiables. A la différence du C, elles ne sont pas une application particulière des tableaux et ne se terminent pas par le caractère nul ('\u0000'). |
|
L'opérateur + permet d'effectuer la concaténation de chaînes, de valeurs littérales et d'objets. Adieu strcat (), strcpy () et compagnie ! |
|
Les opérateurs << et >> utilisés sur les streams pour fabriquer plus facilement des chaînes en C++, ont leur équivalent avec l'opérateur + sur les chaînes de caractères en Java. |
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 IndexOutOfBoundsExceptionCes 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 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 NegativeArraySizeExceptionConstruit 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 IndexOutOfBoundsExceptionModifie 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 IndexOutOfBoundsExceptionRenvoie 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 IndexOutOfBoundsExceptionCopie à 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 IndexOutOfBoundsExceptionChange 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 IndexOutOfBoundsExceptionAjoute 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 IndexOutOfBoundsExceptionInsè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 IndexOutOfBoundsExceptionInsè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é.
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 inEntrée standard pour saisir des caractères.
public static PrintStream outSortie standard pour écrire des messages.
public static PrintStream errSortie 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, IndexOutOfBoundsExceptionCopie 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 SecurityExceptionQuitte 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 SecurityExceptionPermet 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 SecurityExceptionPermet 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.dirLes 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 SecurityExceptionPermet 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, UnsatisfiedLinkErrorPermet 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); } }
|