Java 捕获随时间变化的变量值
假设我有一个变量x,它在代码运行时会发生变化。我想把x的实际值赋给另一个变量y。如果我只是一如既往地分配它(Java 捕获随时间变化的变量值,java,variables,Java,Variables,假设我有一个变量x,它在代码运行时会发生变化。我想把x的实际值赋给另一个变量y。如果我只是一如既往地分配它(inty=x),y的值也会随着时间而变化。 我还希望能够随时刷新y的值 int y = x; //let's assume this actually works System.out.println("y="+y+" x="+x); Thread.sleep(2000); System.out.println("later"); System.out.println("y="+y+" x
inty=x
),y的值也会随着时间而变化。
我还希望能够随时刷新y的值
int y = x; //let's assume this actually works
System.out.println("y="+y+" x="+x);
Thread.sleep(2000);
System.out.println("later");
System.out.println("y="+y+" x="+x);
y = x;
System.out.println("refresh");
System.out.println("y="+y+" x="+x);
这将是理想的输出
y=20 x=20
later
y=20 x=423
refresh
y=423 x=423
创建一个方法,如下所示:
int storePrev(int x) {
return x;
}
只需在更改x的值之前调用此方法。这将在不指定的情况下复制x。您所写的内容实际上是有效的(至少对于原语是有效的)。只需尝试运行以下操作:
public static void main(String[] args) throws IOException, InterruptedException {
int x = 20;
int y = x; //let's just see if it actually works
System.out.println("y="+y+" x="+x);
Thread.sleep(2000);
x += 403;
System.out.println("later");
System.out.println("y="+y+" x="+x);
y = x;
System.out.println("refresh");
System.out.println("y="+y+" x="+x);
}
这让我感到:
y=20 x=20
later
y=20 x=423
refresh
y=423 x=423
这不是你想要的吗?如果你想保留所有分配给y的值的记录,那么你可以简单地创建一个数组。 例如: 如果只想保留上一个x,则只需在y=x语句后更改x的值。示例:
int x=20;
int y = x; // y becomes 20
System.out.println("y="+y+" x="+x);
Thread.sleep(2000); //suppose x becomes 423
System.out.println("later");
System.out.println("y="+y+" x="+x);
y = x; // y also becomes 423
System.out.println("refresh");
System.out.println("y="+y+" x="+x);
我不完全确定你在找什么。可能是观察者模式?
y=x
捕获了它,因此如果只在x
具有您想要捕获的值的时间点执行一次,那么就完成了。我想我的问题是,我正在尝试比较这两个变量。在我的代码中有这样一个地方:if(y==x){//do something}
它从不进入if,我知道这是因为y得到x的值来检查条件,这就像写if(x==x)
。我只是想把x的值复制到y。
int x=20;
int y = x; // y becomes 20
System.out.println("y="+y+" x="+x);
Thread.sleep(2000); //suppose x becomes 423
System.out.println("later");
System.out.println("y="+y+" x="+x);
y = x; // y also becomes 423
System.out.println("refresh");
System.out.println("y="+y+" x="+x);