Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 捕获随时间变化的变量值_Java_Variables - Fatal编程技术网

Java 捕获随时间变化的变量值

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

假设我有一个变量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="+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);