250 likes | 370 Views
Strings et Tableaux en Java. H Batatia. Objets particuliers. Dans Java les chaînes de caractères et les tableaux sont des objets particuliers dans la forme de leur déclaration dans la manière de les créer. String. Java vient avec deux classes pour créer et manipuler des chaînes
E N D
Strings et Tableaux en Java H Batatia
Objets particuliers • Dans Java les chaînes de caractères et les tableaux sont des objets particuliers • dans la forme de leur déclaration • dans la manière de les créer
String • Java vient avec deux classes pour créer et manipuler des chaînes • String : crée des objets de taille fixe, leur création est flexible • à utiliser quand les chaînes n'ont pas besoin de changer • StringBuffer : crée des objets dont la taille peut varier • à utiliser quand vous avez besoin d'insérer, substituer…des caractères
Constructeurs public String() public String(String value) public String(char[] value) public String(StringBuffer buffer) Méthodes de classe public static String copyValueOf(char[] data) public static String valueOf(Object data) 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) Méthode d'instance public char charAt(int index) public int compareTo(String str) public boolean equals(Object o) public boolean equalsIgnoreCase(String str) public int indexOf(int ch) public int indexOf(String str) public int lastindexOf(int ch) public int lastIndexOf(String str) public int length() public String replace(char old,char new) public String substring(int i) public String toLowerCase() public String toString(); public String toUpperCase() public String trim() classe String
Déclaration d'un String • String ref; • Cette instruction crée une variable ref qui contient null; • L'objet de type String n'existe pas encore.
Création d'un objet de type String • Par initialisation • soit String s; s = "Une chaîne"; • ou String s = "Une autre chaîne"; • Par opérateur new • soit String s; s = new String(); • ou String s = new String(); • ou String s = new String ("ma chaîne");
s Ceci Cela p Ceci et Ceci et cela Les objets String sont immuables • Après sa création, le contenu d'un objet String ne peut pas changer • aucune méthode ne peut changer ses caractères • Attention! • la référence à un objet String peut changer pour pointer vers un autre String • String s = "Ceci"; • s = "Cela"; • p = "Ceci et "; • p = p + s;
Exercice • Ecrire un programme Java permettant de • lire une chaîne (exemple « lire chaîne ») • inverse la chaîne (exemple « enîahc eril ») • imprime la chaîne inversée • Utilisez les méthodes length() et charAt()
Exercice • Ecrire un programme Java permettant de • lire une chaîne • Compter le nombre et la position des espaces • Afficher le nombre et les positions des espaces • Utilisez les méthodes length() , indexOf()
Exercice • Ecrire un programme Java permettant de • lire une phrase • inverse chaque mot de la phrase • imprime les mots inversés • Utiliser les méthodes suivantes :
méthodes de String pour l'inversion de chaînes • public int indexOf (int car) • renvoie l'indice du caractère donné (-1 s'il n'existe pas) • public int indexOf (int car, int enPartantDe) • renvoie l'indice du caractère donné (-1 s'il n'existe pas) mais en commençant la recherche à partir de l'indice enPartantDe • public String substring (int indexDebut, int indexFin) • retourne la sous-chaîne comprise entre les indices indexDebut et indexFin • public String trim(); • retourne la chaîne en ayant supprimer tous les espaces au début et à la fin
Exercice • Ecrivez un programme java qui se compose d'un codeur et d'un décodeur de texte • le codeur inverse les mots du texte et ajoute une base (un nombre entier aléatoire) à chaque caractère • le décodeur retranche la base et inverse les mots du texte
Tableaux • Des objets de type particulier • Il n'existe pas de classe pour manipuler les objets tableaux • Déclaration • type [] variable; • Exemple • int [] var; • String [] args; • La déclaration ne crée pas l'objet. • var et args sont null • Le nombre d'éléments d'un tableau est obtenu par l'attribut public • var.length • args.length
création de tableaux de primitifs • L'objet tableau de primitif peut être créé • soit par initialisation à la déclaration • int [] tab = {1, 2, 3, 4}; • soit à l'aide de l'opérateur new • int [] tab; • tab = new int [10]; • la création du tableau initialise tous les éléments à 0 • Les éléments du tableau sont indexés à partir de 0 • tab[0], tab[1]…
0 0 0 0 tableau d'entiers: illustration (1) int [] tab = new int [4]; tab[0] tab[1] tab tab[2] tab[3]
1 2 3 4 tableau d'entiers: illustration (2) int [] tab = new int[4]; for(int i=1;i<5;i++) tab[i-1] = i; tab[0] tab[1] tab tab[2] tab[3]
Exercice • Ecrire une classe Tableau qui contient un tableau d'entier et les méthodes : • getElement(int i) : retourne l'élément i • setElement(int i, int v) : place v dans l'élément i • getMax() : retourne le plus grand élément • getMin() : retourne le plus petit élément • Ecrire une classe de test pour vérifier le fonctionnement de la classe Tableau
Création d'un tableau de chaînes • Un tableau de chaînes peut être créé • soit par initialisation • String [] tab = {"un", "deux", "trois"}, • soit par l'opérateur new • String [] tab = new String[5]; • l'objet tab
null null null null tableau de chaînes: illustration (1) String [] tab = new String [4]; tab[0] tab[1] tab tab[2] tab[3]
élément 0 élément 1 élément 2 élément 3 tableau de chaînes: illustration (2) for(int i=0;i<4;i++) tab[i] = "élément" + i; tab[0] tab[1] tab tab[2] tab[3]
Exemple : tableau de chaînes public class Arguments { public static void main(String[] args) { for (int i=0;i<args.length;i++) System.out.println("args[" + i + "] = " + args[i]); } }
Exercices • Ecrire une classe Nombre qui décrit un nombre en toutes lettre et contient une méthode valeur qui calcule la valeur décimale de ce nombre (exemple huit cent soixante dix) et écrit le nombre en chiffres (exemple 870) • Ecrire une classe de Test qui prend en argument le nombre en lettre et affiche le nombre en chiffre
Tableau à plusieurs dimensions • Déclaration • type [][] var; • Création • type [][] var = new type[n][m]; • Exemple • int[][] m = new int[10][8]; • Longueur • m.lenght //nombre de lignes • m[5].length //nombre de colonnes de la ligne 6
Exercice • Ecrire une classe Matrice ayant • n x m éléments (privés). • La matrice doit avoir un constructeur, • une méthode getNbLignes() qui retourne le nombre de lignes • une méthode getNbColonnes() qui retourne le nombre de colonnes • une méthode getMij(int i, int j) qui retourne l'élément M[i][j] • une méthode addition (Matrice t) qui teste la faisabilité de l'addition et retourne un nouvel objet Matrice résultat de l'addition • une méthode multiplier (Matrice t) qui teste la faisabilité de la multiplicité et retourne un nouvel objet Matrice résultat de la multiplication • Créer une classe Test avec un main qui lit les éléments de deux matrices et calcule (si possible) leur somme et leur produit.
Contructeurs StringBuffer() StringBuffer(int length) StringBuffer(String str) Méthodes d'instances public synchronized StringBuffer append(Object obj) public synchronized StringBuffer append(String str) public synchronized StringBuffer append(char[] str) public StringBuffer append(boolean b) public synchronized StringBuffer append(char c) public StringBuffer append(int i) public StringBuffer append(long l) public StringBuffer append(float f) public StringBuffer append(double d) public synchronized StringBuffer insert(int ,Object obj) throws StringIndexOutOfBoundsException public synchronized StringBuffer insert(int ,String str) throws StringIndexOutOfBoundsException public synchronized StringBuffer insert(int ,char[] str) throws StringIndexOutOfBoundsException public StringBuffer insert(int ,boolean b) throws StringIndexOutOfBoundsException public synchronized StringBuffer insert(int ,char c) throws StringIndexOutOfBoundsException public StringBuffer insert(int ,int i) throws StringIndexOutOfBoundsException public StringBuffer insert(int ,long l) throws StringIndexOutOfBoundsException public StringBuffer insert(int ,float f) throws StringIndexOutOfBoundsException public StringBuffer insert(int ,double d) throws StringIndexOutOfBoundsException public int length() synchronized void set CharAt(int index,char ch) throws exception StringIndexOutOfBoundsException synchronized void setLength(innt newlength) throws exception StringIndexOutOfBoundsException StringBuffer