88 Utilisation des arrays, des chaînes et des classes conteneurs

Preview:

Citation preview

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.

Recommended