【发布时间】:2019-08-22 16:51:05
【问题描述】:
将为此代码创建多少个对象?
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对象。
【问题讨论】:
-
我知道这是一个重复的问题。但我无法理解这段代码。
-
您将对象引用 (m1,m2,m3,m) 与它们引用的对象混淆了。只有在调用
new语句(或clone()方法,但这是另一回事)时才会创建对象。 -
m1和m2指的是 oneMain对象。m3指的是另一个Main对象。总共有 2 个Main对象。 -
在
gacemarks(m2);之后尝试System.out.println(m2.num)。那么你应该得到 70,因为m是对m2所引用的对象的引用。 (我假设System.out.println(m2)没有显示,因为您没有覆盖toString())。 -
它确实返回了十六进制代码!!! @托马斯