gpt4 book ai didi

java - Java中静态变量的使用

转载 作者:行者123 更新时间:2023-11-30 07:25:47 24 4
gpt4 key购买 nike

我知道静态变量只创建和初始化一次,即在加载类时而不是每个对象。

在下面给出的代码中,我想做的是:我在类 A 中将一个 int 变量“a”声明为静态的,并为其赋值 5。当执行 main 时,我将其值更改为 6 并使无限循环的程序。所以目前“a”的值为6。

现在我尝试做的是,当 A 类仍在循环时,我尝试从其他类 B 访问这个变量,我希望在运行 B 类时应该打印 6(因为当我运行 B 类时“a"值更改为 6) 但令人惊讶的是它仍然给了我 5。

即使我将“a”声明为静态,为什么会发生这种情况?无法弄清楚这种方法有什么问题。

class A{
static int a=5;

public static void main(String args[]){
System.out.println(A.a+"");
a=6;
while(true){
}
}
}

class B{
public static void main(String args[]){
System.out.println(A.a+"");
}
}

最佳答案

您遇到的问题是您正在运行两个不同的 JVM 进程。您应该做的是在自己的线程中运行每个“主要”方法。这样他们共享(因此可以修改)相同的内存。这是修改为使用线程的示例:

public class Main{
public static int v = 5;

public static void main(String[] args) throws Exception{
new Thread(new A()).start();
Thread.sleep(5000);
new Thread(new B()).start();
}
}

class A implements Runnable{
public void run(){
System.out.println(Main.v);
Main.v = 6;
}
}

class B implements Runnable{
public void run(){
System.out.println(Main.v);
}
}

旁注:虽然此示例确实演示了问题的预期内容,但在编写使用多线程的正确 Java 程序方面仍然存在很多错误。做你的研究。

关于java - Java中静态变量的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10689934/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com