【发布时间】:2020-05-25 05:40:52
【问题描述】:
我对此感到困惑。这就是我的意思:
public class minMax {
private int min = Integer.MAX_VALUE;
public void changeMin() {
min = 10;
}
public static void main (String args[]) {
minMax ob1 = new minMax();
ob1.changeMin();
System.out.println(ob1.min); // outputs 10 <<<<
}
}
所以它输出 10,即使我们没有明确地将 min 变量绑定到 minMax 构造函数。我认为您必须有一个构造函数来使用变量初始化对象才能使其工作。例如:
private int min;
public minMax() {
min = Integer.MAX_VALUE;
}
我错过了什么?希望能给个解释,谢谢!
编辑:
为了进一步说明我的观点,我们为什么需要执行以下操作:
private int min;
public minMax() {
min = Integer.MAX_VALUE;
}
而不是将其保留为默认构造函数,而只是:
private int min = Integer.MAX_VALUE;
public minMax() {
}
【问题讨论】:
-
您是否在问为什么变量
min包含您通过显式调用changeMin()方法实际分配给它的值?我认为问题在于Integer.MAX_VALUE在构造函数或其他代码块之外分配给min。你能澄清一下令人困惑的部分吗? -
为该类的该实例更改变量(对于特定对象)。在我们的类中,我们总是在类的构造函数中初始化变量,所以我认为这就是绑定它们的原因。所以我有点困惑,如果我们不需要在构造函数中初始化它,那为什么要这样做呢?我将在我的问题中提供一些代码来说明它。一秒。
标签: java object constructor