Parce qu'en Java (comme dans la majorité des langages avec GC) les arguments sont passés par valeurs de référence (*) (par nom, si tu préfères), pas par référence au sens C++. Ou alors ce passage par référence est spécifié en faisant du paramètre un "out parameter" (possible en C# par exemple), mais Java n'a pas ce concept (à la con, de toute façon)
Donc tab dans ton main et x dans ta fonction sont deux références différentes pointant sur le même objet. Et donc rebinder x sur un nouvel objet n'a strictement aucune influence sur tab.
(*):
Citation :
A common misconception exists that parameters in Java are passed by reference. They are not. Parameters are passed by value. The misconception arises from the fact that all apparent object variables are really object references. This leads to some unexpected results if you do not understand exactly what is happening.
|
Message édité par masklinn le 28-05-2009 à 17:14:12
---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody