Post on 04-Apr-2015
8888
Utilisation des arrays, des chaînes et des classes conteneurs
Utilisation des arrays, des chaînes et des classes conteneurs
8-8-22
ObjectifsObjectifs
A la fin de ce cours, vous serez capables de :
• Créer et manipuler des chaînes dans Java
• Utiliser des classes conteneurs pour convertir des chaînes en primitives et des primitives en chaînes
• Utiliser des arrays
• Utiliser des arrays et des vecteurs redimensionnables
• Gérer des clauses de ligne de commande dans une application Java
A la fin de ce cours, vous serez capables de :
• Créer et manipuler des chaînes dans Java
• Utiliser des classes conteneurs pour convertir des chaînes en primitives et des primitives en chaînes
• Utiliser des arrays
• Utiliser des arrays et des vecteurs redimensionnables
• Gérer des clauses de ligne de commande dans une application Java
8-8-33
Qu’est-ce qu’une chaîne ?Qu’est-ce qu’une chaîne ?
• Une chaîne est une séquence de caractères.
• La classe String représente l’ensemble des chaînes dans Java.
• Les objets String sont en lecture seule ; leur valeur ne peut être changée après qu’ils aient été créés.
• Une String est un objet.
• Une chaîne est une séquence de caractères.
• La classe String représente l’ensemble des chaînes dans Java.
• Les objets String sont en lecture seule ; leur valeur ne peut être changée après qu’ils aient été créés.
• Une String est un objet.
8-8-44
Comment créer une chaîneComment créer une chaîne
• Assignez une constante entre guillemets doubles à une variable String :
• Enchaînez d’autres chaînes :
• Utilisez un constructeur :
• Assignez une constante entre guillemets doubles à une variable String :
• Enchaînez d’autres chaînes :
• Utilisez un constructeur :
String category = "Action";
String empName = firstName + " " + lastName;
String empName = new String("Joe Smith");
8-8-55
Comment enchaîner les chaînesComment enchaîner les chaînes
• Utilisez l’opérateur + pour enchaîner les chaînes :
• Il est possible d’enchaîner des primitives et des chaînes :
• On peut également enchaîner les chaînes en utilisant String.concat().
• Utilisez l’opérateur + pour enchaîner les chaînes :
• Il est possible d’enchaîner des primitives et des chaînes :
• On peut également enchaîner les chaînes en utilisant String.concat().
System.out.println("Name = " + empName);
int age = getAge();
System.out.println("Age = " + age);
8-8-66
Comment effectuer des opérations sur les chaînes
Comment effectuer des opérations sur les chaînes
• Comment déterminer la longueur d’une chaîne :
• Comment trouver le caractère placé à un index spécifique :
• Comment retourner une sous-chaîne d’une chaîne :
• Comment déterminer la longueur d’une chaîne :
• Comment trouver le caractère placé à un index spécifique :
• Comment retourner une sous-chaîne d’une chaîne :
int length(); String str = "Comedy";
int len = str.length();
char charAt(int index); String str = "Comedy";
char c = str.charAt(1);
String substring
(int beginIndex,
int endIndex);
String str = "Comedy";
String sub =
str.substring(2,4);
8-8-77
Comment effectuer des opérations sur les chaînes
Comment effectuer des opérations sur les chaînes
• Comment convertir une chaîne en majuscules ou en minuscules :
• Comment supprimer les blancs aux extrémités d’une chaîne :
• Comment trouver l’index d’une sous-chaîne :
• Comment convertir une chaîne en majuscules ou en minuscules :
• Comment supprimer les blancs aux extrémités d’une chaîne :
• Comment trouver l’index d’une sous-chaîne :
String toUpperCase();
String toLowerCase();
String caps =
str.toUpperCase();
String trim(); String nospaces =
str.trim();
int indexOf (String str);
int lastIndexOf
(String str);
int index =
str.indexOf("me");
8-8-88
Comment comparer deux chaînesComment comparer deux chaînes
• Utilisez equals()si vous voulez respecter la casse :
• Utilisez equalsIgnoreCase()si vous voulez ignorer la casse :
• N’utilisez pas ==.
• Utilisez equals()si vous voulez respecter la casse :
• Utilisez equalsIgnoreCase()si vous voulez ignorer la casse :
• N’utilisez pas ==.
String passwd = connection.getPassword();
if (passwd.equals("fgHPUw"))… // Case is important
String cat = getCategory();
if (cat.equalsIgnoreCase("Drama"))…
// We just want the word to match
8-8-99
Comment créer des chaînes à partir d’autres objets
Comment créer des chaînes à partir d’autres objets
• Utilisez Object.toString().
• Votre classe peut se substituer à toString():
• System.out.println() appelle automatiquement la méthode toString() d’un objet :
• Utilisez Object.toString().
• Votre classe peut se substituer à toString():
• System.out.println() appelle automatiquement la méthode toString() d’un objet :
public Class Movie {…
public String toString {
return name + " (" + Year + ")";
}…
Movie mov = new Movie(…);
System.out.println("Title Rented: " + mov);
8-8-1010
Comment créer des chaînes à partir de primitives
Comment créer des chaînes à partir de primitives
• Utilisez String.valueOf():
• Il existe une version de System.out.println()pour chaque type de primitive :
• Utilisez String.valueOf():
• Il existe une version de System.out.println()pour chaque type de primitive :
String seven = String.valueOf(7);
String onePoint0 = String.valueOf(1.0f);
int count;
…
System.out.println(count);
8-8-1111
Comment créer des primitives à partir de chaînes
Comment créer des primitives à partir de chaînes
• Utilisez les classes conteneurs de primitives.
• Il existe une classe conteneur pour chaque type de primitive ; par exemple :
– Integer contient le type int.
– Float contient le type float.
• Les classes conteneurs fournissent des méthodes permettant de convertir une chaîne en primitive.
• Utilisez les classes conteneurs de primitives.
• Il existe une classe conteneur pour chaque type de primitive ; par exemple :
– Integer contient le type int.
– Float contient le type float.
• Les classes conteneurs fournissent des méthodes permettant de convertir une chaîne en primitive.
8-8-1212
Méthodes de conversion des classes conteneurs
Méthodes de conversion des classes conteneurs
String qtyVal = qtyField.getText();
String priceVal = priceField.getText();
int qty = Integer.parseInt(qtyVal);
float price = Float.parseFloat(priceVal);
17Quantity:
425.00Price:
qtyFieldqtyField
priceFieldpriceField
Exemple : Utilisez les méthodes pour traiter lesdonnées issues des champs d’un formulaire.Exemple : Utilisez les méthodes pour traiter lesdonnées issues des champs d’un formulaire.
8-8-1313
Comment modifier le contenu d’une chaîne
Comment modifier le contenu d’une chaîne
• Utilisez la classe StringBuffer pour les chaînes de caractères modifiables :
• Utilisez StringBuffer si vous devez continuer à ajouter des caractères à une chaîne.
• Utilisez la classe StringBuffer pour les chaînes de caractères modifiables :
• Utilisez StringBuffer si vous devez continuer à ajouter des caractères à une chaîne.
public String reverseIt(String s) {
StringBuffer sb = new StringBuffer();
for (int i = s.length() - 1; i >= 0; i--)
sb.append(s.charAt(i));
return sb.toString();
}
8-8-1414
Exercice pratique 9-1Exercice pratique 9-1
Que produit chacun des fragments de code ?Que produit chacun des fragments de code ?
String s = new String("Friday");
if(s == "Friday")
System.out.println("Equal A");
if(s.equals("Friday"))
System.out.println("Equal B");
int num1 = 1234567;
System.out.println(String.valueOf(num1).charAt(3));
8-8-1515
Exercice pratique 9-1Exercice pratique 9-1
Que produit chacun des fragments de code ?Que produit chacun des fragments de code ?
String s1 = "Monday";
String s2 = "Tuesday";
System.out.println(s1.concat(s2).substring(4,8));
// s3 begins with 2 spaces and ends with 2 spaces
String s3 = " Monday ";
System.out.println(s3.indexOf("day"));
System.out.println(s3.trim().indexOf("day"));
8-8-1616
Qu’est-ce qu’un array ?Qu’est-ce qu’un array ?
• Un array est une collection de variables de même type.
• Chaque élément peut contenir un article unique.
• Les articles peuvent être des primitives ou des références d’objet.
• La longueur de l'array est fixée lors de sa création.
• Un array est une collection de variables de même type.
• Chaque élément peut contenir un article unique.
• Les articles peuvent être des primitives ou des références d’objet.
• La longueur de l'array est fixée lors de sa création.
1
2
4
8
[0]
[1]
[2]
[3]
Action
Comedy
Drama
[0]
[1]
[2]
8-8-1717
Comment créer un array de primitivesComment créer un array de primitives
1. Déclarez l'array.
2. Créez l’objet array.
3. Initialisez les éléments de l'array(facultatif).
1. Déclarez l'array.
2. Créez l’objet array.
3. Initialisez les éléments de l'array(facultatif).
null powerspowers
powerspowers1
2
4
0
0
0
powerspowers
8-8-1818
Déclaration d’un array de primitivesDéclaration d’un array de primitives
• Créez une variable qui puisse faire référence à l'array.
• La variable d'array pointe vers null jusqu’à ce que l’objet array soit créé.
• Créez une variable qui puisse faire référence à l'array.
• La variable d'array pointe vers null jusqu’à ce que l’objet array soit créé.
int[] powers; // Example type[] arrayName;
… or …
type arrayName[]; nullpowerspowers
8-8-1919
Création de l’objet array pour un array de primitives
Création de l’objet array pour un array de primitives
• Créez un array de la longueur requise et affectez-le à la variable d'array :
• Les arrays de primitives sont automatiquement initialisés.
• Créez un array de la longueur requise et affectez-le à la variable d'array :
• Les arrays de primitives sont automatiquement initialisés.
int[] powers; // Declare array variable
powers = new int[4]; //Create array object
[0]
[1]
[2]
0
0
0
0 [3]
powerspowers
8-8-2020
Initialisation des éléments de l'arrayInitialisation des éléments de l'array
• Assignez une valeur à chaque élément :
• Les arrays peuvent être créés et initialisés simultanément :
• Assignez une valeur à chaque élément :
• Les arrays peuvent être créés et initialisés simultanément :
int[] primes = {2, 3, 5, 7};
type[] arrayName = {valueList}; primesprimes[0][1][2]
2
3
5
7 [3]
arrayName[index] = value;
powers[0] = 1;
powerspowers[0][1][2]
1
0
0
0 [3]
8-8-2121
Comment créer un array de références d’objet
Comment créer un array de références d’objet
1. Déclarez l'array.
2. Créez l’objet array.
3. Initialisez les objets dans l'array.
1. Déclarez l'array.
2. Créez l’objet array.
3. Initialisez les objets dans l'array.
nullcategoriescategories
null
null
null
categoriescategories
Action
Comedy
Drama
categoriescategories
8-8-2222
Initialisation des objets dans l'array Initialisation des objets dans l'array
• Assignez une valeur à chaque élément de l'array :
• Créez et initialisez l'array simultanément :
• Assignez une valeur à chaque élément de l'array :
• Créez et initialisez l'array simultanément :
String[] categories =
{"Action", "Comedy", "Drama"};
// Create an array of four empty Strings
String[] arr = new String[4];
for (int i = 0; i < arr.length; i++) {
arr[i] = new String();
}
8-8-2323
Utilisation d’un array de références d’objet
Utilisation d’un array de références d’objet
• Chaque élément peut être affecté à un objet de type adéquat :
• Chaque élément peut être traité comme un objet individuel :
• Un élément d'array peut être passé à une méthode ; les éléments d'array sont passés par référence.
• Chaque élément peut être affecté à un objet de type adéquat :
• Chaque élément peut être traité comme un objet individuel :
• Un élément d'array peut être passé à une méthode ; les éléments d'array sont passés par référence.
System.out.println
(“Length is ” + categories[2].length());
String category = categories[0];
8-8-2424
Arrays et exceptionsArrays et exceptions
• ArrayIndexOutOfBoundsException est générée lorsque l’index d'array est incorrect :
• NullPointerException est générée lorsque vous tentez d’accéder à un élément qui n’a pas été initialisé :
• ArrayIndexOutOfBoundsException est générée lorsque l’index d'array est incorrect :
• NullPointerException est générée lorsque vous tentez d’accéder à un élément qui n’a pas été initialisé :
// This will throw NullPointerException
Movie[] movieList = new Movie[3];
String director = movieList[0].getDirector();
//This will throw ArrayIndexOutOfBoundsException
String[] list = new String[4];
System.out.println(list[5]);
8-8-2525
Exercice pratique 9-2Exercice pratique 9-2
1. Que produit chacun des fragments de code ?1. Que produit chacun des fragments de code ?
int[] numbers = new int[5];System.out.println(numbers.length-1);
String[] categories = {"Action", "Comedy", "Drama", "Foreign"};int index = categories.length-2System.out.println(categories[index].length());
a. a.
b. b.
8-8-2626
Exercice pratique 9-2Exercice pratique 9-2
2. Pour chaque fragment, le code va-t-il compiler ? S’il compile, fonctionnera-t-il sans générer d’erreur ?
2. Pour chaque fragment, le code va-t-il compiler ? S’il compile, fonctionnera-t-il sans générer d’erreur ?
String[] categories ={"Action", "Comedy", "Drama"};
int count = 0;while (categories[count] != null) {
count ++;}
String[] categories = new String[3];System.out.println(categories[0]);
a. a.
b. b.
8-8-2727
Exercice pratique 9-2Exercice pratique 9-2
2. Pour chaque fragment, le code va-t-il compiler ? S’il compile, fonctionnera-t-il sans générer d’erreur ?
2. Pour chaque fragment, le code va-t-il compiler ? S’il compile, fonctionnera-t-il sans générer d’erreur ?
String[] categories = new String[3];System.out.println(categories[0].length());
String[] categories;System.out.println(categories.length);
c. c.
d. d.
String[] categories;System.out.println(categories[0].length()[0]);
e. e.
8-8-2828
Arrays multidimensionnelsArrays multidimensionnels
Java prend en charge les arrays d'arrays :Java prend en charge les arrays d'arrays :
type[][] arrayname = new type[n1][n2];
int[][] mdarr = new int[4][2];
mdarr[0][0] = 1;
mdarr[0][1] = 7;[0]
[1]
[2]
[3]
[0][0] [0][1]
1 7
0 0
0 0
0 0
mdarrmdarr
8-8-2929
La méthode main() revueLa méthode main() revue
• main() a un seul paramètre, args.
• args est un array de Strings contenant des paramètres de ligne de commande :
• main() a un seul paramètre, args.
• args est un array de Strings contenant des paramètres de ligne de commande :
public class SayHello {
public static void main(String[] args) {
if (args.length != 1)
System.out.println("Specify 1 argument");
else
System.out.println("Hello " + args[0]);
} …
8-8-3030
Comment utiliser des arrays redimensionnables
Comment utiliser des arrays redimensionnables
La classe Vector fournit un arrayredimensionnable pour chaque type d’objet :
• Création d’un vecteur vide :
• Création d’un vecteur de taille initiale déterminée :
La classe Vector fournit un arrayredimensionnable pour chaque type d’objet :
• Création d’un vecteur vide :
• Création d’un vecteur de taille initiale déterminée :
Vector members = new Vector();
// Create a vector with 10 elements. The
vector // can be expanded later.
Vector members = new Vector(10);
8-8-3131
Comment modifier un vecteurComment modifier un vecteur
• Ajout d’un élément à la fin du vecteur :
• Ajout d’un élément à un emplacement spécifique :
• Suppression d’un élément situé à un index spécifique :
• Ajout d’un élément à la fin du vecteur :
• Ajout d’un élément à un emplacement spécifique :
• Suppression d’un élément situé à un index spécifique :
String name = Movie.getNextName();
vector.addElement(name);
// Remove the first element
vector.removeElementAt(0);
// Insert a string at the beginning
vector.insertElementAt(name, 0);
8-8-3232
Comment accéder à un vecteurComment accéder à un vecteur
• Obtention du premier élément :
• Obtention d’un élément situé à un emplacement spécifique :
• Localisation d’un objet dans un vecteur :
• Détermination de la taille d’un vecteur :
• Obtention du premier élément :
• Obtention d’un élément situé à un emplacement spécifique :
• Localisation d’un objet dans un vecteur :
• Détermination de la taille d’un vecteur :
String s = (String)vector.firstElement();
int size = vector.size();
String s = (String)vector.elementAt(2);
int position = vector.indexOf(name);
8-8-3333
RésuméRésumé
Au cours de cette leçon, vous devriez avoir retenu que :
• Une chaîne est une séquence de caractères.
• On doit utiliser StringBuffer lorsqu’on veut modifier le contenu d’une chaîne.
• Les arrays peuvent contenir des primitives ou des objets.
• On doit utiliser l’objet Vector pour créer des arrays redimensionnables.
• On doit utiliser les classes conteneurs lorsqu’on veut créer un vecteur de primitives.
Au cours de cette leçon, vous devriez avoir retenu que :
• Une chaîne est une séquence de caractères.
• On doit utiliser StringBuffer lorsqu’on veut modifier le contenu d’une chaîne.
• Les arrays peuvent contenir des primitives ou des objets.
• On doit utiliser l’objet Vector pour créer des arrays redimensionnables.
• On doit utiliser les classes conteneurs lorsqu’on veut créer un vecteur de primitives.