gpt4 book ai didi

java - 从另一种方法运行一种方法时未读取公共(public)变量

转载 作者:行者123 更新时间:2023-12-01 23:43:03 24 4
gpt4 key购买 nike

这不是我的实际代码,但它显示了我想要做的事情。为什么 Print 方法在另一个方法中运行时最终打印原始值而不是更新后的值?当我从 PSVM 运行它们时,它会像我预期的那样打印数字 3。

  public int testOne = 0;
public static void main(String[] args) {
Main tester = new Main();
tester.Increase();
}
public void Increase() {
Main tester = new Main();
testOne = 3;
tester.Print();
}
public void Print() {
System.out.println(testOne);
}
}

输出似乎为0,有人知道为什么会发生这种情况吗?如果它是编译器的事情,请在 repl.it 中运行它。

最佳答案

public void Increase() {
Main tester = new Main(); // new instance Main1, testOne = 0
testOne = 3; // current instance Main0, testOne = 3
tester.Print(); // calling Main1.Print() prints 0
}

您所做的 testOne 分配是当前类中的分配,但您实际上是从您在本地范围内创建的类的全新实例调用 Print() 函数。
你想做的是这样的:

public void Increase() {
testOne = 3;
Print();
}

将从当前类上下文中调用此 Print() 方法。

您面临的问题是范围。在这里阅读:https://www.geeksforgeeks.org/variable-scope-in-java/

关于java - 从另一种方法运行一种方法时未读取公共(public)变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58251138/

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