Java statique des paramètres de la méthode

Pourquoi le code suivant retour 100 100 1 1 1 et pas 100 1 1 1 1 ?

public class Hotel {
private int roomNr;

public Hotel(int roomNr) {
    this.roomNr = roomNr;
}

public int getRoomNr() {
    return this.roomNr;
}

static Hotel doStuff(Hotel hotel) {
    hotel = new Hotel(1);
    return hotel;
}

public static void main(String args[]) {
    Hotel h1 = new Hotel(100);
    System.out.print(h1.getRoomNr() + " ");
    Hotel h2 = doStuff(h1);
    System.out.print(h1.getRoomNr() + " ");
    System.out.print(h2.getRoomNr() + " ");
    h1 = doStuff(h2);
    System.out.print(h1.getRoomNr() + " ");
    System.out.print(h2.getRoomNr() + " ");
}
}

Pourquoi semble-t-il à passer l'Hôtel par la valeur de doStuff() ?

double possible de stackoverflow.com/questions/40480/is-java-pass-by-reference
Java passe par valeur. Voir la question. (Aussi, static n'a rien à faire avec elle).

OriginalL'auteur Blitzkr1eg | 2010-04-28