Vous êtes sur la page 1sur 18

Les classes internes

Classes internes Une classe interne est dclare l'intrieur d'une autre classe. Elle peut donc accder aux membres de la classe externe. Classe interne statique Une classe interne statique ne peut accder qu'aux membres statiques de la classe externe. Exemple :

La compilation du fichier ClasseExterne.java produit deux fichiers compils : ClasseExterne.class contient la classe ClasseExterne uniquement ClasseExterne$ClasseInterne.class contient la classe ClasseInterne

Classe interne non statique Une classe interne non statique peut accder aux membres statiques de la classe ainsi qu'aux membres de l'objet qui l'a cre. En fait, le compilateur cre un membre supplmentaire dans la classe interne rfrenant l'objet qui l'a cr. Une telle classe interne peut-tre dclare de manire globale dans l'objet; elle sera accessible par l'ensemble des mthodes de l'objet. Elle peut aussi tre dclare de manire locale une mthode de l'objet. Elle sera alors accessible depuis cette seule mthode.

Exemple (Classe non statique globale) :

Depuis la classe interne, dans le cas o plusieurs variables ou mthodes portent le mme nom dans la classe interne et la classe externe, le pointeur this seul dsigne l'instance de la classe interne, tandis que le pointeur this prcd du nom de la classe externe dsigne l'instance de la classe externe.

Les Tableaux

Les tableaux Un tableau est un ensemble index de donnes d'un mme type. L'utilisation d'un tableau se dcompose en trois parties : Cration du tableau Remplissage du tableau Lecture du tableau

Cration d'un tableau


Un tableau se dclare et s'instancie comme une classe :

Ou

L'oprateur [ ] permet d'indiquer qu'on est en train de dclarer un tableau. Dans l'instruction prcdente, nous dclarons un tableau d'entiers (int, integer) de taille 10, c'est--dire que nous pourrons stocker 10 entiers dans ce tableau.
Si [ ] suit le type, toutes les variables dclares seront des tableaux, a lors que si [ ] suit le nom de la variable, seule celle-ci est un tableau :

Dans ces quatre dclarations, seule variable n'est pas un tableau.

Attention!!

Ou est la faute??

Remplissage d'un tableau Une fois le tableau dclar et instanci, nous pouvons le remplir :

L'indexation dmarre partir de 0, ce qui veut dire que, pour un tableau de N lments, la numrotation va de 0 N-1. Dans l'exemple ci-dessus, la 6me case contient donc la valeur 23. Nous pouvons galement crer un tableau en numrant son contenu :

Ce tableau contient 5 lments. Lorsque la variable est dj dclare, nous pouvons lui assigner d'autres valeurs en utilisant l'oprateur new :

Lecture d'un tableau Pour lire ou crire les valeurs d'un tableau, il faut ajouter l'indice entre crochets ([ et ]) la suite du nom du tableau :

L'indice 0 dsigne le premier lment du tableau. L'attribut length d'un tableau donne sa longueur (le nombre d'lments).

Donc pour un tableau nomm monTableau l'indice du dernier lment est monTableau.length-1. Ceci est particulirement utile lorsque nous voulons parcourir les lments d'un tableau.

Les tableaux en Java 5 La section prcdente montre comment parcourir un tableau. Java 5 fournit un moyen plus simple. L'exemple suivant ralise le traitement sur monTableau:

Attention nanmoins, la variable element contient une copie de monTableau[i]. Avec des tableaux contenant des variables primitives, toute modification de element n'aura aucun effet sur le contenu du tableau

Tableaux plusieurs dimensions En Java, les tableaux plusieurs dimensions sont en fait des tableaux de tableaux. Exemple, pour allouer une matrice de 5 lignes de 6 colonnes :

Java permet de rsumer l'opration prcdente en :

La premire version montre qu'il est possible de crer un tableau de tableaux n'ayant pas forcment tous la mme dimension. On peut galement remplir le tableau la dclaration et laisser le compilateur dterminer les dimensions des tableaux, en imbriquant les accolades :

Pour dterminer la longueur des tableaux, on utilise galement l'attribut length :

De la mme manire que prcdemment, on peut facilement parcourir tous les lments d'un tableau :

La classe Arrays La classe Arrays du package java.util possde plusieurs mthodes de gestion des tableaux de types de base, et d'objets :

la mthode asList convertit un tableau en liste, la mthode binarySearch effectue la recherche binaire d'une valeur dans un tableau, la mthode equals compare deux tableaux (longueur et contenu), la mthode fill remplit un tableau avec la valeur donne, la mthode sort trie un tableau dans l'ordre croissant de ses lments.

Exemple de source :

Copie d'un tableau

La copie d'un tableau implique la copie de ses lments dans un autre tableau. Dans le cas d'un tableau d'objets, seules les rfrences ces objets sont copies, aucun nouvel objet n'est cr.
La mthode arraycopy de la classe System permet de copier tout ou partie d'un tableau vers un autre tableau dj allou. Comme toutes les classes, les tableaux drivent de la classe Object. La copie intgrale d'un tableau dans un nouveau tableau peut donc se faire en utilisant la mthode clone(). La valeur retourne par cette mthode tant de type Object, il faut la convertir dans le type concern.

Voyons maintenant cette histoire de rfrence!!

Questions?

Vous aimerez peut-être aussi