33
8 8 Utilisation des arrays, des chaînes et des classes conteneurs

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

Embed Size (px)

Citation preview

Page 1: 88 Utilisation des arrays, des chaînes et des classes conteneurs

8888

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

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

Page 2: 88 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

Page 3: 88 Utilisation des arrays, des chaînes et des classes conteneurs

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.

Page 4: 88 Utilisation des arrays, des chaînes et des classes conteneurs

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");

Page 5: 88 Utilisation des arrays, des chaînes et des classes conteneurs

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);

Page 6: 88 Utilisation des arrays, des chaînes et des classes conteneurs

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);

Page 7: 88 Utilisation des arrays, des chaînes et des classes conteneurs

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");

Page 8: 88 Utilisation des arrays, des chaînes et des classes conteneurs

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

Page 9: 88 Utilisation des arrays, des chaînes et des classes conteneurs

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);

Page 10: 88 Utilisation des arrays, des chaînes et des classes conteneurs

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);

Page 11: 88 Utilisation des arrays, des chaînes et des classes conteneurs

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.

Page 12: 88 Utilisation des arrays, des chaînes et des classes conteneurs

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.

Page 13: 88 Utilisation des arrays, des chaînes et des classes conteneurs

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();

}

Page 14: 88 Utilisation des arrays, des chaînes et des classes conteneurs

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));

Page 15: 88 Utilisation des arrays, des chaînes et des classes conteneurs

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"));

Page 16: 88 Utilisation des arrays, des chaînes et des classes conteneurs

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]

Page 17: 88 Utilisation des arrays, des chaînes et des classes conteneurs

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

Page 18: 88 Utilisation des arrays, des chaînes et des classes conteneurs

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

Page 19: 88 Utilisation des arrays, des chaînes et des classes conteneurs

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

Page 20: 88 Utilisation des arrays, des chaînes et des classes conteneurs

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]

Page 21: 88 Utilisation des arrays, des chaînes et des classes conteneurs

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

Page 22: 88 Utilisation des arrays, des chaînes et des classes conteneurs

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();

}

Page 23: 88 Utilisation des arrays, des chaînes et des classes conteneurs

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];

Page 24: 88 Utilisation des arrays, des chaînes et des classes conteneurs

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]);

Page 25: 88 Utilisation des arrays, des chaînes et des classes conteneurs

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.

Page 26: 88 Utilisation des arrays, des chaînes et des classes conteneurs

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.

Page 27: 88 Utilisation des arrays, des chaînes et des classes conteneurs

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.

Page 28: 88 Utilisation des arrays, des chaînes et des classes conteneurs

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

Page 29: 88 Utilisation des arrays, des chaînes et des classes conteneurs

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]);

} …

Page 30: 88 Utilisation des arrays, des chaînes et des classes conteneurs

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);

Page 31: 88 Utilisation des arrays, des chaînes et des classes conteneurs

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);

Page 32: 88 Utilisation des arrays, des chaînes et des classes conteneurs

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);

Page 33: 88 Utilisation des arrays, des chaînes et des classes conteneurs

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.