package geometrie;
class PassageParValeur {
static void test(Point x) {
x = new Point();
}
public static void main(String[] args) {
Point p = new Point(2, 3);
test(p);
System.out.println("x=" + p.x + ", y=" + p.y); // x=2, y=3
}
}
Cependant, à la différence d'une valeur d'un type primitif, une méthode ou l'accès à un champ peut être appliqué à une référence, et l'objet référencé peut être modifié de cette façon :
package geometrie;
class ModificationObjet {
static void test(Point x) {
x.translater(1, 1);
}
public static void main(String[] args) {
Point p = new Point(2, 3);
test(p);
System.out.println("x=" + p.x + ", y=" + p.y); // x=3, y=4
}
}
Dans ce cas, la procédure ModificationObjet.test ne modifie pas la valeur de son argument, qui reste une référence au même objet, mais elle modifie l'objet référencé.