Java setter and instance -- 改变一个变量
Java setter and instance -- Change a variable
我正在尝试学习如何在创建实例后对其进行更改。我有一个带有循环的构造函数,可以打印我的设置变量。变量设置从 0 开始,循环一直循环直到设置变量不为 0。我显然错误的期望是:
- 将创建一个名为对象的新实例。
- 循环会 运行 因为设置变量是 0.
- 设置变量将更改为 1。
- 循环将停止。
我问:
- 为什么我的 while 循环不使用更新后的变量 "setting"?
- 这是已经实例化的东西的正确方法吗?
如果有更好的方法请举例说明,我学习一下。
public class test2 extends Thread {
private int setting;
public void setSetting(int input) {
this.setting = input;
}
public test2() {
while (setting == 0) {
System.out.println(setting);
}
}
public static void main(String[] args) {
test2 object = new test2();
object.setSetting(1);
}
}
A new instance would be created named object.
The loop would run because the setting variable is 0.
是的。你是对的。
The setting variable would be changed to 1.
这不是真的,因为构造函数中的循环仍然是 运行 并且控制还没有从构造函数返回,因此下一个语句 object.setSetting(1);
没有被执行。
您可以通过创建两个线程来实现。一个将循环直到变量为 0,另一个将其设置为某个值。
但是,您不能在构造函数中使用该循环,因为您需要在这两个线程之间共享完全构建的 object 。
(注意:在这种情况下,您需要将字段 setting
设置为 volatile 以使更改对第二个线程可见)。
我正在尝试学习如何在创建实例后对其进行更改。我有一个带有循环的构造函数,可以打印我的设置变量。变量设置从 0 开始,循环一直循环直到设置变量不为 0。我显然错误的期望是:
- 将创建一个名为对象的新实例。
- 循环会 运行 因为设置变量是 0.
- 设置变量将更改为 1。
- 循环将停止。
我问:
- 为什么我的 while 循环不使用更新后的变量 "setting"?
- 这是已经实例化的东西的正确方法吗?
如果有更好的方法请举例说明,我学习一下。
public class test2 extends Thread { private int setting; public void setSetting(int input) { this.setting = input; } public test2() { while (setting == 0) { System.out.println(setting); } } public static void main(String[] args) { test2 object = new test2(); object.setSetting(1); } }
A new instance would be created named object.
The loop would run because the setting variable is 0.
是的。你是对的。
The setting variable would be changed to 1.
这不是真的,因为构造函数中的循环仍然是 运行 并且控制还没有从构造函数返回,因此下一个语句 object.setSetting(1);
没有被执行。
您可以通过创建两个线程来实现。一个将循环直到变量为 0,另一个将其设置为某个值。
但是,您不能在构造函数中使用该循环,因为您需要在这两个线程之间共享完全构建的 object 。
(注意:在这种情况下,您需要将字段 setting
设置为 volatile 以使更改对第二个线程可见)。