← (précédent) A.5 La classe Math
A.7 Les structures de contrôle (I) : for - while - do...while ?
Accueil S O M M A I R E

A.6 La classe String

La classe String permet de créer des variables contenant des chaines de caractères. Ces variables sont en fait des objets, au sens de la programmation orientée Objet. Pour créer ces variables, pardon, ces objets, on utilise le mot clé new. On utilisera ce mot-clé fréquemment à partir de la partie consacrée à la POO (programmation orientée objet). Bien entendu, comme nous l'avons déjà vu, les variables de type String peuvent aussi être affectées comme les variables de type de base (int, double, char, boolean, etc...).

Mais je vous conseille dès maintenant d'utiliser new pour créer les objets String.
EXEMPLE 1 :  


1.     public class MethodesChaines1
2.     {
3.		
4.          public static void main (String [] args)
5.          {
6.               String chaine = new String("bonjour"); char c;
7.               c = chaine.charAt(2);
8.               System.out.println("Le caract\u00e8re de chaine en position 2 = " + c);
9.          }
10.
11.     }
compilez puis exécutez ce programme. Il sera affiché :

Le caractère de chaine en position 2 = n

La méthode charAt() est déclarée : char charAt(int index)
Un peu d'anticipation sur la POO :

En POO, les fonctions sont appelées "méthodes". En POO, on utilise une méthode en créant d'abord un objet, puis en l'appliquant à l'objet comme suit : nom de l'objet, suivi d'un point, suivi du nom de la méthode avec ses parenthèses dans lesquelles se trouvent un ou plusieurs arguments.
Dans le cas où la méthode est déclarée avec le mot-clé static, on n'a pas besoin de créer un objet. On peut tout simplement écrire le nom de la claae, suivi d'un point, suivi du nom de la méthode. C'est le cas de la classe Math. Toutes les méthodes de la classe Math sont déclarée avec le mot-clé static. .

La méthode charAt() n' est pas static . Donc obligé de créer un objet et lui appliquer la méthode. Ce qui est fait ligne 6.
Avec String chaine = new String("bonjour").
L' objet s' appelle donc chaine. En ligne 7, on lui applique alors la méthode qui fournit un résultat de type char puisque le mot char précède le nom de la fonction.
Ce résultat est donc affectée à la variable de type char en ligne 7. La variable c déclarée ligne 6. Puis la ligne 8 indique ce qu' il faut afficher.
Regardez les parenthèses de la déclaration de la méthode. on lit : int index. Ce qui veut dire que la méthode requiert un argument de type int. C' est la position du caractère dans la chaine de caractères. La position zéro étant celle du premier caractère. pour 0, on a le caractère b. Pour la position 1, on a le caractère o et pour 2 on a n.
EXEMPLE 2 :  


1.    public class MethodesChaines2
2.    {
3.		
4.        public static void main (String [] args)
5.        {
6.             String chaine1 = new String("bonjour"); String chaine2 = new String("bonsoir");
7.             int c = chaine1.compareTo(chaine2); 
8.             int d = chaine2.compareTo(chaine1);
9.             int e = chaine1.compareTo(chaine1);
10.            System.out.println("La comparaison de bonjour avec bonsoir = " + c);
11.            System.out.println("La comparaison de bonsoir avec bonjour = " + d);
12.            System.out.println("La comparaison de bonjour avec bonjour = " + e);
13.            System.out.println("Donc, bonjour arrive avant bonsoir dans l' ordre alphabétique" );
14.       }
15.
16.     }
compilez puis exécutez ce programme. Il sera affiché :

La comparaison de bonjour avec bonsoir = -9
La comparaison de bonsoir avec bonjour = 9
La comparaison de bonjour avec bonjour = 0
Donc, bonjour arrive avant bonsoir dans l' ordre alphabétique


Expliquons :
La fonction compareTo() est déclarée : int compareTo(String autreChaine)
Sur la ligne 6, deux objets de type String sont créés. Ce sont, chaine1 et chaine2. La méthode compareTo() requiert un argument de type String. Cet objet est comparée à un autre sur lequel on applique la méthode. Et cette méthode fournit un nombre entier de type int, positif ou négatif. Ecrire chaine1.compareTo(chaine2), c' est comme si on écrivait chaine1 - chaine2. Puisque chaine1 - chaine2 donne un nombre négatif, ça veut dire que chaine2 est supérieure à chaine1. La notion de supériorité veut dire que chaine2 arrive après chaine1 dans l' ordre alphabétique. Par analogie avec les nombres, le nombre 25 est supérieur au nombre 19. Car 25 arrive après 19 dans l' ordre numérique. Maintenant, vous allez vous demander pourquoi le -9 et le 9?
Pour vous débutants en programmation, ça n' a aucune importance. Ce qui est important, c' est le côté positif ou négatif du résultat. Si le résultat est égal à zéro, vous l' aurez compris, ça veut dire que les deux chaines sont identiques. Ligne 9 et l' affichage que donne ligne 12.
EXEMPLE 3 :  


1.     public class MethodesChaines3
2.     {
3.		
4.          public static void main (String [] args)
5.          {
6.             String chaine1 = new String("bonjour"); String chaine2 = new String("Bonsoir");
7.             int c = chaine1.compareTo(chaine2); int d = chaine2.compareTo(chaine1);
8.             int e = chaine1.compareTo(chaine1);
9.             System.out.println("La comparaison de bonjour avec Bonsoir = " + c);
10.            System.out.println("La comparaison de Bonsoir avec bonjour = " + d);
11.            System.out.println("La comparaison de bonjour avec bonjour = " + e);
12.            System.out.println("Maintenant Bonsoir arrive avant bonjour dans l' ordre alphabétique" );
13.         }
14.
15.     }
compilez puis exécutez ce programme. Il sera affiché :

La comparaison de bonjour avec Bonsoir = 32
La comparaison de Bonsoir avec bonjour = -32
La comparaison de bonjour avec bonjour = 0
Maintenant Bonsoir arrive avant bonjour dans l' ordre alphabétique


Expliquons :
Même explication que précédement. A une exception près. Cette fois, c' est Bonsoir qui arrive avant bonjour. Pourquoi ? nous avons changé une seule chose. La lettre b de bonsoir est maintenant en majuscule. Et ça change tout. En java, toutes les lettres majuscules arrive toujours avant toutes les lettres miniscules dans l' ordre alphabétique. C' est pourquoi Bonsoir est arrive maintenant avant bonjour.
EXEMPLE 4 :  


1.     public class MethodesChaines4
2.     {
3.		
4.         public static void main (String [] args)
5.         {
6.             String chaine1 = new String("bonjour"); String chaine2 = new String("Bonsoir");
7.             int c = chaine1.compareToIgnoreCase(chaine2); int d = chaine2.compareToIgnoreCase(chaine1);
8.             int e = chaine1.compareToIgnoreCase(chaine1);
9.             System.out.println("La comparaison de bonjour à Bonsoir = " + c);
10.            System.out.println("La comparaison de chaine1 à chaine2 = " + d);
11.            System.out.println("La comparaison de chaine1 à chaine2 = " + e);
12.            System.out.println("bonjour arrive à nouveau avant bonsoir dans l' ordre alphabétique" );
13.        }
14.
15.     }
compilez puis exécutez ce programme. Il sera affiché :

La comparaison de bonjour avec Bonsoir = -9
La comparaison de Bonsoir avec bonjour = 9
La comparaison de bonjour avec bonjour = 0
bonjour arrive à nouveau avant Bonsoir dans l' ordre alphabétique


Expliquons :
La méthode compareToIgnoreCase() se comporte comme la méthode compareTo(). A une exception près. On ne tient plus compte des majuscules (IgnoreCase). C' est pourquoi les nombres entiers fournis par cet exemple sont les même que ceux de l' exemple 2.

Les méthode compreTo() et compareToIgnoreCase() sont très importantes en informatique de gestion. Elles permettent de classer des noms par ordre alphabétiques.
La méthode compareToIgnoreCase() est déclarée comme compreTo() : int compreToIgnoreCase(String autreChaine)
Elle requiert un argument de type String que l' on compre à un autre objet String sur lequel on applique la méthode. Comme la méthode compreTo(), elle fournit un nombre entier positif si l' argument (ici, autreChaine) arrive après la chaine sur laquelle on applique la méthode, par ordre alphabétique. Négatif, dans le cas contraire. Le nombre 0 est fournit si les deux chaines sont identiques. Mais contrairement à la méthode compreTo(), la méthode compreToIgnoreCase() ne tient pas compte des majuscules.
EXEMPLE 5 :  


1.    public class MethodesChaines5
2.    {
3.		
4.        public static void main (String [] args)
5.        {
6.           String chaine1 = new String("bonjour"); String chaine2 = new String("java");
7.           String chaine1PLUSchaine2 = chaine1.concat(chaine2);
8.           String chaine2PLUSchaine1 = chaine2.concat(chaine1);
9.           System.out.println("La concatenation de bonjour et java donne " + chaine1PLUSchaine2);
10.          System.out.println("La concatenation de java et bonjour donne " + chaine2PLUSchaine1);
11.       }
12.
13.   }
compilez puis exécutez ce programme. Il sera affiché :

La concatenation de bonjour et java donne bonjourjava
La concatenation de java et bonjour donne javabonjour


Expliquons :
La méthode concat() est déclarée : String concat(String autreChaine)
Cette méthode s' utilise en créant un objet String et en lui appliquant la méthode. De plus, elle requiert un argument qui est un autre objet de type String (indiqué par ce qui est écrit dans ses parenthèses). Enfin, elle fournit une valeur de type String (le mot String précède le nom de la méthode.
On a créé les deux objets de type String à concatener sur la ligne 6.
Sur la ligne 7, on créé une variable de type String à qui on affecte ce que fournit la concaténation de chaine1 avec chaine2. Sur la ligne 8, on crée un objet de type String à qui on affecte la valeur fournie par la concaténation de chaine2 avec chaine1. D' où les affichages correspondants.
EXEMPLE 6 :  


1.     public class MethodesChaines6
2.     {
3.		
4.          public static void main (String [] args)
5.          {
6.               String chaine1 = new String("bonjour"); 
7.               String chaine2 = new String("jour"); 
8.               String chaine3 = new String("soir");
9.               boolean proposition = chaine1.endsWith(chaine2);
10.              boolean supposition = chaine1.endsWith(chaine3);
11.              System.out.println("La chaine bonjour se termine par jour :" + proposition);
12.              System.out.println("La chaine bonjour se termine par soir : " + supposition);
13.         }
14.
15.     }
compilez puis exécutez ce programme. Il sera affiché :

La chaine bonjour se termine par jour : true
La chaine bonjour se termine par soir : false


La méthode endsWith() est déclarée : boolean endsWith(String suffixe)
Cette méthode requiert un argument de type String. Si l' objet de type String sur laquelle on applique la méthode se termine comme l' argument, la méthode fournit une valeur de type booléenne (boolean) égale à true (vraie). Dans le cas contraire, la valeur est égale à false (faux). Evidement, sur notre exemple, bonjour se termine par jour alors que bonjour ne se termine pas par soir.
EXEMPLE 7 :  


1.     public class MethodesChaines7
2.     {
3.		
4.          public static void main (String [] args)
5.          {
6.               String chaine = new String("bonjour"); char c = 'j'; 
7.               int position = chaine.indexOf(c); 
8.               System.out.println("La position du caract\u00e8re j dans bonjour est : " + position);
9.              
10.        }
11.
12.     }
compilez puis exécutez ce programme. Il sera affiché :

La position du caractère j dans bonjour est : 3

La méthode indexOf() est déclarée : int indexOf(char caractere)
Cette méthode s' applique à un objet de type String (ici, la variable chaine). Elle requiert un argument qui est un caractere. Puis ell fournit un nombre entier qui représente la position du caractère dans la chaine. Dans notre exemple, la méthode indexOf() reçoit c comme argument. La valeur de c est le caractère 'j'. Ce caractère se trouve en position 3 dans la chaine "bonjour". La position zéro étant celle du premier caractère de "bonjour". C' est à dire b. b e position zér. o en position 1. n en position 2 et j en position 3. D' où le 3 à l' affcihage.

En réalité, la méthode indexOf() est déclarée : int indexOf(int caractere) J' ai menti afin de commencer par un exemple moins compliqué. La question que vous allez vous poser est de savoir pourquoi l' argument de type char convient puisqu' il n' y a pas de message d' erreur. La réponse est toute simple. Vous vous souvenez, je vous ai déjà dit qu ' en Java, le type char est en fait un type entier dont les valeurs vont de 0 à 255. La conversion du type char en type int se fait de façon implicite. L' autre question évidente que vous allez vous poser est de savoir pourquoi alors ne pas déclarer la méthode avec un type char en argument. Parce que certains caractères occupent un espace mémoire bien plus grand que le type char. Les caractères arabes, chinois, russes, etc... occupent le même espace que le type int. Voilà pourquoi la méthode est déclarée avec le type int plutôt que le type char. Mais vous n' avez pas à réfléchir sur ce point. Vous voulez savoir quelle position occupe un caractère dans une chaine de caractère. Utilisez la méthode indexOf() en mettant dans ses parenthèses le caractère ou le nom de la variable qui continet le caractère dont vous cherhez la position dans une chaine quelcoque.

Sachez enfin que si le caractère dont vous cherchez la position dans une chaine n' existe pas dans cette chaine, alors, la méthode indexOf() fournit la valeur -1.
EXEMPLE 8 :  


1.     public class MethodesChaines8
2.     {
3.		
4.          public static void main (String [] args)
5.          {
6.               String chaine = new String("bonjour"); char c = 'j'; int nombre = c;
7.               int position = chaine.indexOf(nombre); 
8.               System.out.println("La nombre entier correspondant au caractere j est  : " + nombre);
9.               System.out.println("La position du caract\u00e8re j dans bonjour est : " + position);
10.        }
11.
12.     }
compilation puis exécution donnent à l' affichage :

La position du caractère j dans bonjour est : 3

Même affichage que l' exemple précédent. Normal. C' est la même chose. J' ai mis le nombre correspondant au caractère 'j' dans une variable de type int. La conversion implicite du type char en type int se fait avant l' utilisation de la méthode indexOf(). Ensuite, on utilise la méthode (ligne 7) cette fois en utilisant l' argument de type int exactement comme dans la déclaration de la méthode.


Autre notion très importante : la surcharge des méthodes.
On dit qu' il y a surcharge de méthodes lorsque dans une même classe, plus d' une méthode de même nom ont été définies. Pourquoi définir plusieurs méthodes avec le même nom ? Parce qu' il peut arriver qu' on ait besoin d' accomplir une tâche de divrses façons. Par exemple, la méthode indexOf() permet de trouver la position d' un caractère dans une chaine. Si le caractère se trouve plusieurs fois dans la même chaine, exemple on recherche la position du caractère 'p' dans la chaine "pipe". Que va fournir la méthode indexOf() ?, Est-ce la position zéro ou la position 2 ? bonne question n' est-ce pas ? Le même caractère peut même s' y trouver 3, 4, 5 ou même plus de fois. Pour éviter la confusion, les créateurs de java ont préféré définir plussieurs méthodes indexOf(). Dans la classe String, la méthode indexOf() est surchargée. Dans les exemples suivants, nous allons les aborder.
EXEMPLE 9 :  


1.     public class MethodesChaines9
2.     {
3.		
4.          public static void main (String [] args)
5.          {
6.               String chaine = new String("papyrus"); char c = 'p'; 
7.               int position = chaine.indexOf(c); 
8.               System.out.println("La position du caract\u00e8re p dans papyrus est : " + position);
9.         }
10.
11.     }
Après compilation puis exécution, il sera affiché :

La position du caractère p dans bonjour est : 0

Je ne vais pas reprendre les explications sur ce que fait la méthode indexOf(). Juste pour vous dire que cette méthode() fournit la position de la première fois (on dit en java, première occurence) où l' on trouve le caractère passé en argument sur la chaine sur laquelle on applique la méthode. Evidement, on trouve le caractère p pour la première fois dans la chaine "papyrus" en position zéro. D' où l' affichage.
EXEMPLE 10 :  


1.     public class MethodesChaines10
2.     {
3.		
4.          public static void main (String [] args)
5.          {
6.            String chaine = "papyrus"; char c = 'p'; 
7.            int position = chaine.indexOf(c, 1); 
8.            System.out.println("Position de p dans papyrus \u00e0 partir de position 2 = " + position);
9.        }
10.
11.     }
Compilez puis exécutez. Il sera affiché :

Position de p dans papyrus à partir de position 1 = 2

La deuxième méthode indexOf() est déclarée : int indexOf(int caractere, int position)
Comme la première, elle fournit la position d' un caractère dans une chaine. Mais cette fois, à partir d' une position précise. Cette position est justement le 2ème argument de la méthode. Dans notre exemple, on cherche la position du caractère 'p' dans la chaine. Mais à partir de la position 1. C' est à dire à paritr de la lettre a. Et naturellement, on troube le caractère 'p' en position 2 à partir de la position 1.
EXEMPLE 11 :  


1.     public class MethodesChaines11
2.     {
3.		
4.          public static void main (String [] args)
5.          {
6.               String chaine = new String("paraparalme"); String sousChaine = new String("ra"); 
7.               int position = chaine.indexOf(sousChaine); 
8.               System.out.println("premi\u00e8re occurence de "ra" dans paraparalme = " + position);
9.        }
10.
11.     }
compilez puis exécutez, il sera affiché :

première occurence de ra dans paraparalme = 2

La 3ème méthode indexOf() est déclarée : int indexOf(String sousCh)
Elle fournit la position de la première occurence de la sous-chaine passée en argument dans la chaine sur laquelle la méthode est appliquée. La sous-chaine est ici "ra". Et la première fois où l' on trouve "ra" dans "paraparalme" est 2. Evidement, la première lettre de la sous-chaine "ra" se trouve en position 2 dans la chaine.
EXEMPLE 12 :  


1.     public class MethodesChaines12
2.     {
3.		
4.          public static void main (String [] args)
5.          {
6.               String chaine = new String("paraparalme"); String sousChaine = new String("ra"); 
7.               int position = chaine.indexOf(sousChaine, 6); 
8.               System.out.println("premi\u00e8re occurence de ra à partir de position 6 = " + position);
9.        }
10.
11.     }
compilez puis exécutez, il sera affiché :

première occurence de ra à partir de postion 6 = 6

La 4ème méthode indexOf() est déclarée : int indexOf(String sousCh, int position)
Elle fournit la position de la première occurence de la sous-chaine passée en argument dans la chaine sur laquelle la méthode est appliquée. Et ce, à partir d' une position qui est le deuxième argument. On trouve la sous-chaine "ra" en position 6 à partir de la position 6.


Je vous ai déjà dit que lorsque une méthode est déclarée avec un argument d' un certain type, quand on l' utilise, on repecte le type de l' argument. Ou alors, on y met un type qui peut être convertible de façon implicite.
Sachez que lorsqu' une méthode est déclarée avec un certain nombre d' arguments (2, 3, ou plus), non seulement il faut le même respect des types, mais en plus, il faut aussi respecter l' ordre des argument. Si vous remplacez la ligne 7 par : int position = chaine.indexOf(6, sousChaine); alors, un message d' erreur sera envoyé à la compilation.
EXEMPLE 13 :  


1.  public class MethodesChaines13
2.  {
3.		
4.     public static void main (String [] args)
5.     {
6.      String chaine = new String("paraparalmerate"); char c = 'a';
7.      System.out.println("dernière occurence de a = " + chaine.lastIndexOf(c));
8.      System.out.println("dernière occurence de a entre positions 0 et 8 = " + chaine.lastIndexOf(c, 8));
9.     }
10.
11. }
compilez puis exécutez. il sera affiché :

dernière occurence de a = 12
dernière occurence de a entre positions 0 et 8 = 7


Les méthodes lastIdexOf() fournissent la dernière position d' une lettre.
La première méthode lastIdexOf() est déclarée :int lastIndexOf(int ch)
Elle fournit la dernière position du caractère passé en argument. Ainsi, la dernière fois où l' on trouve la lettre a dans la chaine est 12.
La deuxième méthode lastIndexOf() est déclarée : int lastIndexOf(int ch, int position)
Elle fournit la dernière position du caractère passé en argument. Mais en se limitant à une position passée en 2ème argument. Ici, la dernière fois où l' on trouve la lettre a dans la chaine en se limitant à la position 8, c' est la position 7.
D' où les affichages.
EXEMPLE 14 :  


1.     public class MethodesChaines14
2.     {
3.		
4.          public static void main (String [] args)
5.          {
6.               String chaine = new String("paraparalmerate"); String sousChaine = new String("ra"); 
7.               System.out.println("dernière occurence de ra = " + chaine.lastIndexOf(sousChaine));
8.               System.out.print("dernière occurence de ra entre positions 0 et 8 = ")
9.               System.out.println(" " +chaine.lastIndexOf(sousChaine, 8));
10.       }
11.
12.     }
compilez puis exécutez. il sera affiché :

dernière occurence de ra = 11
dernière occurence de a entre positions 0 et 8 = 6

Les 3ème et 4ème méthodes lastIdexOf() fournissent la dernière position d' une sous-chaine.
La 3ème méthode lastIdexOf() est déclarée :int lastIndexOf(String sousCh)
Elle fournit la dernière position de la sous-chaine passée en argument. Ainsi, la dernière fois où l' on trouve la sous-chaine "ra" dans la chaine est 11.
La 4ème méthode lastIndexOf() est déclarée : int lastIndexOf(String ch, int position)
Elle fournit la dernière position de la sous-chaine passée en argument. Mais en se limitant à une position passée en 2ème argument. Ici, la dernière fois où l' on trouve la sous-chaine "ra" dans la chaine en se limitant à la position 8, c' est la position 6.
D' où les affichages.
EXEMPLE 15 :  


1.     public class MethodesChaines15
2.     {
3.		
4.          public static void main (String [] args)
5.          {
6.               String chaine = new String("bonjour"); int nombreCaracteres = chaine.length(); 
7.               System.out.println("nombre de caracteres de chaine = " + chaine.length);
8.               
9.        }
10.
11.     }
compilez puis exécutez. il sera affiché :

nombre de caracteres de chaine = 7

Vous l' avez compris, la méthode length() fournit un nombre entier qui est le nombre de caractères d' une chaine de caractères. Elle est déclarée : int length()
Elle ne requiert aucun argument.
EXEMPLE 16 :  


1.     public class MethodesChaines16
2.     {
3.		
4.          public static void main (String [] args)
5.          {
6.               String chaine = new String("main"); char c = 'm'; char d = 'p'; 
7.               System.out.println("nouvelle chaine  = " + chaine.replace(c, d));
8.               
9.        }
10.
11.     }
compilez puis exécutez. il sera affiché :

nouvelle chaine = pain

La méthode replace() est déclarée : String replace(char ancien, char nouveau)

Cette méthode requiert 2 arguments. un premier caractère suivi d' un deuxième. Elle s' applique à un objet de type String sur lequel on veut remplacer un caractère par un autre. Le premier caractère est celui qu' on remplace alors que le deuxième est le remplaçant. Ici, on a remplacé le caractère m (variable c) par le caractère p (variable d). La méthode fournit alors une nouvelle chaine de caractères qui tient compte du remplacement. C' est pourquoi main devient pain.

Que se pass-t-il si le caractère qu' on veut remplacer ne se trouve pas dans la chaine. Pas de message d' erreur. La méthode replace() fournit la chaine sans aucun changement. Evidement !

Que se passe-t-il si le caractère qu' on veut remplacer se trouve plus d' une fois dans la chaine? Ce caractère sera remplacé à tous les endroits. Par exemple : chaine = "paparazzi"; on veut remplacer p par m, on aura : "mamarazzi"
EXEMPLE 17 :  


1.     public class MethodesChaines17
2.     {
3.		
4.          public static void main (String [] args)
5.          {
6.               String chaine1 = new String("bonjour"); 
7.               String chaine2 = new String("bon"); 
8.               String chaine3 = new String("jour");
9.               boolean proposition = chaine1.startsWith(chaine2);
10.               boolean supposition = chaine1.startsWith(chaine3);
11.               System.out.println("La chaine bonjour commence par bon :" + proposition);
12.              System.out.println("La chaine bonjour se termine par jour : " + supposition);
13.         }
14.
15.     }
compilez puis exécutez il sera affiché :

La chaine bonjour commence par bon : true
La chaine bonjour commence par jour : false


La méthode startsWith() est déclarée : boolean startsWith(String prefixe)
Elle fournit une variable booléenne (true ou false). Elle requiert un argument de type String. Elle compare l' argument et le début de la chaine sur laquelle on applique la méthode. Si l' argument est le début de la chaine, la valeur fournit est true (vraie). Dans le cas contraire, la valeur est false (faux).
EXEMPLE 18 :  


1.     public class MethodesChaines18
2.     {
3.		
4.          public static void main (String [] args)
5.          {
6.               String chaine = new String("bonjour"); 
7.               System.out.println("sous-chaine de bonjour positons 2 à 5 = " + chaine.substring(2, 5));
8.               System.out.println("sous-chaine de bonjour positons 2 à 4 = " + chaine.substring(2, 4));
9.              
10.         }
11.
12.     }
compilation puis exécution donnent :

sous-chaine de bonjour positons 2 à 5 = njo
sous-chaine de bonjour positons 2 à 4 = nj

La méthode substring() est déclarée : String substring(int debut, int fin)

Elle fournit une valeur de type String qui est une sous-chaine de la chaine sur laquelle on applique la méthode. Cette sous-chaine va du caractère en position du premier argument jusqu' au caractère en position du 2ème argument moins 1. Dans notre exemple. Le premier argument est 2 et le caractère en position 2 est n. Le deuxième argeument pour le premier affichage est 5 et la position 4 (5 - 1) continet le caractère 0. C' est pourquoi le premier affichage donne njo. Pour le deuxième affichage, le deuxième argument est 4 et la position 3 contient le caractère j. D' où l' affichage nj.
EXEMPLE 19 :  


1.  public class MethodesChaines19
2.  {
3.		
4.     public static void main (String [] args)
5.     {
6.        String chaine = new String("bonjour"); 
7.        System.out.println("sous-chaine de bonjour à partir de position 3 = " + chaine.substring(2));
8.               
9.              
10.    }
11.
12.  }
compilation puis exécution donnent :

sous-chaine de bonjour à partir de position 3 = jour


La méthode substring() est surchargée elle aussi. L' autre forme de cette méthode est déclarée : String substring(int debut)

Elle fournit une valeur de type String qui est une sous-chaine de la chaine sur laquelle on applique la méthode. Cette sous-chaine va du caractère en position de l' argument jusqu' au dernier caractère de la chaine. Dans notre exemple. Ici, la position de l' argument (3) est j. Du caractère n au derneir carctère de bonjour, on lit : jour.
EXEMPLE 20 :  


1.     public class MethodesChaines20
2.     {
3.		
4.         public static void main (String [] args)
5.         {
6.             String chaine1 = new String("bonjour"); String chaine2 = new String("BONSOIR"); 
7.             System.out.println("bonjour en majuscules donne = " + chaine1.toUpperCase());
8.             System.out.println("BONSOIR en minuscules donne = " + chaine2.toLowerCase());
9.              
10.         }
11.
12.     }
après compilation puis exécution, il sera affiché : bonjour en majuscules donne BONJOUR
BONSOIR en miniscules donne bonsoir

La méthode toUpperCase() est déclarée : String toUpperCase()
Elle ne requiert aucun argument. Elle fournit la chaine sur laquelle on applique la méthode en prenant soin de transformer toutes ses lettres en majuscules.
La méthode toLowerCase() est déclarée : String toLowerCase()
Elle ne requiert aucun argument. Elle fournit la chaine sur laquelle on applique la méthode en prenant soin de transformer toutes ses lettres en minuscules.
EXEMPLE 21 :  


1.     public class MethodesChaines21
2.     {
3.		
4.          public static void main (String [] args)
5.          {
6.               String chaine1 = new String(" bonjour"); String chaine2 = new String(" mari got "); 
7.               System.out.println("chaine1 privé des caractères espaces = " + chaine1.trim());
8.               System.out.println("chaine2 privé des caractères espaces = " + chaine2.trim());
9.              
10.         }
11.
12.     }
compilez puis exécutez, il sera affiché :

chaine1 privé des caractères espaces = bonjour
chaine1 privé des caractères espaces = mari got
La différence n' est pas palpable. Mais sachez que la fonction trim est déclarée : String trim()

Elle ne requiert aucun argument. Elle fournit la même chaine sur laquelle on applique la méthode. Mais avec des espaces de début et de fin supprimés. Les espaces à l' intérieur de la chaine ne sont pas supprimés.


Il existe d' autres méthodes de la classe String. Nous y reviendrons après avoir abordé d' autres notions telles que les tableaux. Vous pouvez les voir sur la plateforme java sur Internet. Tapez dans google plateforme java. Attention, pour ceux qui ont du mal à comprendre l' anglais, ce sera pas facile à comprendre.
← (précédent) A.5 La classe String
A.7 Les structures de contrôle (I) : for - while - do...while ?
Accueil S O M M A I R E

A.6 La classe String