Sunteți pe pagina 1din 8

Prof.

: Sami GHARBI

Chapitre 2: Les tableaux et les types String et StringBuffer

Chapitre 2:
Les tableaux et
les chaines de caractres
I. Les tableaux
1. Dfinir un tableau:
premire mthode
char [] tableau;
On dclare une rfrence vers un tableau de caractres. Nanmoins, aucun espace mmoire n'est allou.
char tableau[];
Pour allouer l'espace mmoire on utilisera la mme syntaxe que celle des objets, en prcisant le nombre
de cases du tableau:
tableau=new char[7];
Comme en C la numrotation des cases commence par 0. Do la dernire case aura l'indice gal la taille
du tableau -1 (dans notre exemple 6).
Soit l'exemple suivant:
class TestTableau{
public static void main(String args[]){
char []tableau;
tableau=new char[4];
tableau[0]='j';
tableau[3]='a';
tableau[2]='v';
tableau[1]='a';
System.out.println(tableau);
}
}
On aura l'excution:
java
Explications:
char []tableau;: cre une rfrence vers un tableau de caractres.
tableau=new char[4];: allocation de la mmoire pour 4 caractres rfrencs par la variable
tableau. Toute les cases du tableau contiennent le caractre de valeur nulle ( '\0' ).
System.out.println(tableau);:cette instruction permet d'afficher les lments d'un tableau.
Page 1

Prof.: Sami GHARBI

Chapitre 2: Les tableaux et les types String et StringBuffer

Une deuxime mthode

On peut crer un tableau en y insrant les lments, soit l'exemple suivant:


class TestTableau2{
public static void main(String args[]){
boolean []tableau={true,false,true};
System.out.println("le deuxime lment est: " + tableau[1]);
}
}
On aura l'excution:

le deuxime lment est: false

2. Longueur
On peut connatre l'excution la taille d'un tableau. Si la rfrence tab dsigne un tableau, on
pourra crire:
tab.length
En quelque sorte length est un attribut du tableau. Cet attribut est en lecture seule: on ne peut pas
le modifier.
3. Tableaux plusieurs dimensions
Il est possible de crer des tableaux 1, 2, n dimensions. Soit la dclaration suivante:
int tableau[][]=new int[6][8];
Permet de crer un tableau deux dimensions: Matrice. Elle contient 6 lignes et 8 colonnes. De mme
pour les autres dimensions.
Il est encore possible en java de crer un tableau de diffrentes dimensions. Soit la dclaration suivante:
int tableau[][]=new int[3][];
Remarquez que la deuxime taille n'est pas prcise.
tableau[0]=new int[4];
tableau[1]=new int[2];
tableau[2]=new int[5];
Le tableau est form par 3 lignes. La 1re ligne contient 4 colonnes, la 2me contient 2 colonnes et la
3me contient 5 colonnes. Ce qui donne le tableau suivant initialis des 0:

II. Le type String


Une chaine de caractres est un objet de type String (de la classe java.lang.String).
1. Concatnation des chanes de caractres
On dfinit dans la classe String l'oprateur + pour la concatnation. La concatnation de 2 chanes
de caractres permet de crer une 3me contenant les 2 chanes.
Page 2

Prof.: Sami GHARBI

Chapitre 2: Les tableaux et les types String et StringBuffer

Il est possible de concatner une chane avec un autre type de donnes : Nombre: entier ou rel,
Caractre, Boolen, Objet.
2. Crer et utiliser des objets de la classe String
Le programme suivant illustre lutilisation dun objet de type String :
public class MaChaine
{public static void main(String args[])
{String ch1=new String(Bonjour);
System.out.println(ch1);
String ch2=Tout le Monde;
System.out.println(ch2);
String ch3=ch1+ch2;
System.out.println(ch3);
}
}
On aura lcran :
Bonjour
Tout le Monde
BonjourTout le Monde
3. Mthodes usuelles : taille et extraction
a. Taille dune chaine de caractre
Pour connatre la taille dun chaine de caractre, on utilise la mthode length() qui retourne le
nombre de caractres dun objet de type String :
Les deux critures suivantes sont quivalentes:
System.out.println(Bonjour.length()) ;
Ou
s=Bonjour;
System.out.println(s.length()) ;
Et donnent le mme rsultat lcran :

b. Extraction dun caractre


la mthodes charAt(int pos) retourne le caractre qui se trouve la position pos dans une chaine
de caractres. La premire position sera 0. Exemple :
Page 3

Prof.: Sami GHARBI

Chapitre 2: Les tableaux et les types String et StringBuffer

s="Bonjour";
char c=s.charAt(0);
System.out.println(c) ;
Affiche lcran
B
c. Extraction dune sous-chaine
Deux mthodes substring retournent une nouvelle chane:

substring(int pos): Renvoie une nouvelle chaine forme par tous les caractres dune
autre chaine partir dune position pos jusqu' la fin de la chaine.

Substring(int indiceDebut,int indiceFin) : Renvoie une nouvelle chaine forme


par tous les caractres dune autre chaine partir dune certaine position indiceDebut jusqu
une position indiceFin-1.

Exemple
String s1="Bonjour";
String s2=s1.substring(1,3);
System.out.println(s2);
s2=s1.substring(4);
System.out.println(s2);
Affiche lcran:
on
our
4. Comparer les chanes de caractres
Pour comparer 2 chaines on utilise la fonction equals de la classe String. La comparaison avec
loprateur == permet de vrifier est ce que les deux chanes rfrencient le mme objet :
String s1=new String("Bonjour");
System.out.println(s1.equals("Bonjour"));
System.out.println(s1=="Bonjour");
Affiche lcran
true
false
Page 4

Prof.: Sami GHARBI

Chapitre 2: Les tableaux et les types String et StringBuffer

Il est possible de faire une comparaison sans tenir compte de la casse (majuscule et minuscule):
System.out.println(s1.equalsIgnoreCase("bonjour"));
Affiche lcran
true
5. Comparer deux chanes: ordre

public int compareTo(String s);retourne une valeur ngative(resp. positive)


si la chane concerne est avant(resp. aprs)s dans l'ordre lexicographique, 0 si la chanes
concerne est gale s.

Exemple:
String ch=new String("bonjour");
int l=ch.length();
System.out.println(ch.compareTo("lundi"));
Affiche l'cran -10 Puisque "bonjour" est avant "lundi" dans l'ordre lexicographique.
6. Chercher une chane dans une autre
Deux mthodes sont proposes pour la recherche:

indexOf(String

s) ou

indexOf(char

c):

permet de chercher la premire

occurrence de la chaine s ( ou le caractre c).

lastIndexOf

(String

s) ou

lastIndexOf(char

dernire occurrence de la chaine s ( ou le caractre c).


Exemple :
String s1="Bonjour";
int n=s1.indexOf("j");
System.out.println(n);
n=s1.indexOf("o");
System.out.println(n);
n=s1.lastIndexOf("o");
System.out.println(n);
Affichent lcran
3
1
4
Page 5

c):

permet de chercher la

Prof.: Sami GHARBI

Chapitre 2: Les tableaux et les types String et StringBuffer

7. Conversion dun type simple vers une chane


Pour convertir nimporte quelle variable de nimporte quel type simple (int, float, double, long,
boolean, char[]) on appelle la mthode statique :
String.valueOf (<variable>)
Qui retourne une chane de caractres quivalente la valeur de la variable passe en paramtre :
Double d=12.0 ;
String s=String.valueOf(d) ;
Cre une chaine s contenant 12.0
8. Conversion d'une chane en un type simple
Conversion
String int

Exemple
String s="189";
int a=Integer.parseInt(s);

String float

String s="18.78";
float a=Float.parseInt(s);

String double

String s="23.5";
double a=Double.parseInt(s);

String boolean

String s="true";
boolean a=Boolean.parseInt(s);

III. La classe StringBuffer


Une fois une chaine String est cre il nest pas possible de la modifier. Pour cela on utilisera une
chaine tampon : la classe StringBuffer qui permet de manipuler dynamiquement une chaine de
caractre.

Spcifier la taille du tampon : setLength(int taille)

Insrer un lment de type simple dans la chaine une certaine position : insert(int
position, char c)

Supprimer des caractres: delete(int debut,int fin) pour supprimer des caractres de
la position de dbut jusqu' fin-1.

Convertir le tampon en une chaine : toString()

Ajouter un lment la fin de la chane append(char c), append(String ch)

Page 6

Prof.: Sami GHARBI

Chapitre 2: Les tableaux et les types String et StringBuffer

Exemple rcapitulatif: les tableaux


On veut crer un tableau rempli par un certain nombre de valeurs de type entier:
import java.util.Scanner;
class Test{
public static void main(String []args){
//dclaration d'un tableau d'entiers
int []tab;
//cration d'un tableau d'entiers: rservation de la mmoire
tab=new int[10];
//cration d'un objet S qui est un lecteur de clavier (System.in)
Scanner S=new Scanner(System.in);
//chargement du tableau par 10 valeurs saisie au clavier.
for(int i=0;i<10;i++){
tab[i]=S.nextInt();
}
//affichage du tableau.
for(int i=0;i<10;i++){
System.out.println(tab[i]);
}
//crer un tableau rempli par des valeurs
Double[]T={12.6;34,12.9};
//affichage du tableau.
for(int i=0;i<T.length;i++){
System.out.println(T[i]);
}

}
}

Page 7

Prof.: Sami GHARBI

Chapitre 2: Les tableaux et les types String et StringBuffer

Exemple rcapitulatif: les chaines


import java.util.Scanner;
public class TestChaine {
public static void main(String []args){
//dclaration d'une varaible String
String ch;
Scanner S=new Scanner(System.in);
ch=S.next();
int l=ch.length();
for(int i=0;i<l;i++){
System.out.println(ch.charAt(i));
}
//extraire les 3 premiers caractres
String m=ch.substring(0,3);
//extraire les trois derniers caractres
m=ch.substring(l-3) ;
System.out.println(""+m);
//chercher la premire apparence de la lettre a dans la chaine
int p=ch.indexOf("a");
//chercher la dernire apparence de la lettre a dans la chaine
p=ch.lastIndexOf("a") ;
//comparer deux chaines
String ch1="java";
String ch2="java";
String ch3=ch1;
boolean b1=ch1==ch2;
boolean b2=ch1==ch3;
boolean b3=ch1.equals(ch2);
boolean b4=ch1.equals(ch2);
//eliminer le premier carcatre de ch
StringBuffer SB=new StringBuffer(ch);
SB.delete(0, 1) ;
System.out.println(SB.toString());
//inserer une chaine saisie au debut la chaine
String k=S.next();
SB.insert(0, k);
System.out.println(SB.toString());
}
}

Page 8

S-ar putea să vă placă și