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
classe String 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()
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 s = new String(); String s = new String(); String s = new String ("ma chaîne");
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; s Ceci Cela p Ceci et Ceci et cela
Exercice Utilisez les méthodes length() et charAt() 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 Utilisez les méthodes length() , indexOf() 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 Utiliser les méthodes suivantes : 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]…
tableau d'entiers: illustration (1) int [] tab = new int [4]; tab[0] tab[1] tab tab[2] tab[3]
tableau d'entiers: illustration (2) int [] tab = new int[4]; for(int i=1;i<5;i++) tab[i-1] = i; 1 2 3 4 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
tableau de chaînes: illustration (1) String [] tab = new String [4]; null tab[0] tab[1] tab tab[2] tab[3]
tableau de chaînes: illustration (2) for(int i=0;i<4;i++) tab[i] = "élément" + i; élément 0 élément 1 élément 2 élément 3 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.
StringBuffer 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) public synchronized StringBuffer insert(int ,char[] str) throws StringIndexOutOfBoundsException public StringBuffer insert(int ,boolean b) public synchronized StringBuffer insert(int ,char c) public StringBuffer insert(int ,int i) public StringBuffer insert(int ,long l) public StringBuffer insert(int ,float f) public StringBuffer insert(int ,double d) public int length() synchronized void set CharAt(int index,char ch) throws exception StringIndexOutOfBoundsException synchronized void setLength(innt newlength)