这段代码会创建多少个对象?
答案是2。 但我得到了3。 m1将被创建,m2引用相同的对象。 m3是新创建的,在调用之后,生成了m对象。
class Main {
int num;
public static void gacemarks(Main m)
{
m.num += 10;
}
public static void main(String[] args) {
Main m1 = new Main();
Main m2 = m1;
Main m3 = new Main();
m2.num = 60;
gacemarks(m2);
System.out.println(m2);
}
}
答案是2。 但我得到了3。 m1将被创建,m2引用相同的对象。 m3是新创建的,在调用之后,生成了m对象。
new
语句(或clone()
方法,但那是另一回事)时才会创建对象。 - RealSkepticm1
和m2
是指同一个Main
对象。m3
是另一个Main
对象。总共有两个Main
对象。 - khelwoodgacemarks(m2)
后尝试使用System.out.println(m2.num)
。你应该会得到70,因为m
是指向m2
所引用的对象的引用。 (我假设System.out.println(m2)
没有显示出来,因为你没有重写toString()
)。 - ThomastoString()
方法。 - Thomas