Dans la suite, vous allez avoir à manipuler des pointeurs sur des structures. Du coup c’est extrêmement simple car 
dans Java toutes les soit­disant structures sont en fait des objets jusqu’à présent volontairement tronqués de la 
plupart de leurs fonctionnalités. Or comme tout objet, la variable qui reçoit un objet en reçoit une référence. Vous 
avez déjà utilisé ce principe sans le savoir, toujours dans le chapitre Les tableaux et structures, avec les structures 
tfabricant et tarticle. 
Cet  exemple  est  bien  plus  intéressant  qu’il  n’y  paraît,  vous  le  voyez  probablement  maintenant  avec  un  oeil  neuf, 
puisque  chaque  déclaration  d’une  variable  enregistrement  de  ces  types  est  en  fait  une  référence  sur 
l’enregistrement : 
q article est une référence sur une structure (un objet) de type tarticle. 
q article contenant une variable de type tfabricant, on crée dedans une référence fab sur un objet de ce type. 
q art2 de type tarticle reçoit la référence de article. Ils référencent le même enregistrement. 
q Le contenu des champs de art2 est affiché, c’est du coup le même que article. Si vous modifiez les champs, la 
modification se répercute sur toutes les références sur cet enregistrement : c’est le même pour tous. 
class tfabricant { 
public String ref; 
public String nom; 
public String adresse; 
public String tel; 
} 
class tarticle { 
public String ref; 
public String libelle; 
public float prix; 
public tfabricant fab; 
} 
class chap8_refstruct { 
public static void main(String[] args) { 
tarticle article=new tarticle(); 
tarticle art2 ; 
article.ref="Art001_01"; 
article.fab=new tfabricant(); 
article.fab.ref="Fab1234"; 
art2=article ; 
System.out.println(art2.ref); 
System.out.println(art2.fab.ref); 
} 
}
e. Le piège en Java 
En Java il faut faire très attention : quand vous passez une référence en paramètre vous pouvez modifier le contenu 
de la référence et ce contenu sera modifié directement dans la zone mémoire, c’est parfait. Mais vous ne pouvez pas 
modifier la référence elle­même ! Si modifiez au sein d’une méthode la valeur de la référence elle­même, elle retrouve 
sa valeur initiale en sortie. Par exemple : 
static void modif(element p1,element p2) { 
p1=p2; 
}
Si dans le programme principal vous avez : 
p1=new element(); 
p2=new element(); 
p1.valeur=10; 
p2.valeur=15; 
modif(p1,p2) ; 
System.out.println(p1.valeur) ;
La sortie sera 10 ! En effet dans la méthode modif(), p1 contient bien la référence vers l’emplacement mémoire de 
l’objet p1, mais la variable p1 est elle­même locale à la méthode ! Donc en affectant p2 à p1, p1 reçoit la référence de 
- 10 -
© ENI Editions - All rigths reserved - Jonifar lina
172
Précédent

- 172/220

Suivant