【发布时间】:2011-02-13 10:31:55
【问题描述】:
为什么下面的代码返回100 100 1 1 1而不是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() + " ");
}
}
为什么似乎将 Hotel 按值传递给 doStuff() ?
【问题讨论】:
-
Java 按值传递。请参阅链接的问题。 (另外,
static与此无关)。
标签: java static parameters pass-by-reference pass-by-value