【发布时间】:2021-06-08 11:38:00
【问题描述】:
有以下情况:
class Bond {
private static int price = 5;
public boolean sell() {
if(price<10) {
price++;
return true;
} else if(price>=10) {
return false;
}
return false;
}
public static void main(String[] cash) {
new Bond().sell();
new Bond().sell();
new Bond().sell();
System.out.print(price);
Bond bond1=new Bond();
System.out.print(price);
}
}
它将打印:8 9。 将要创建的所有实例都将指向堆中的同一个对象吗?
【问题讨论】:
-
为什么……你这么认为?你认为为了创建第二个实例/对象,你需要第二个构造函数?
-
该行为与构造函数无关,但与您将价格字段声明为
static的事实有关。见:What does the 'static' keyword do in a class? -
“它将打印:8 9” - 不,它不会。问之前你有没有测试和观察你的代码?
标签: java constructor instance heap-memory