在Java中,我可以在一个方法和下一个方法之间以及在类之间保留一个变量吗?

在Java中,我可以在一个方法和下一个方法之间以及在类之间保留一个变量吗?,java,variables,methods,persistent,Java,Variables,Methods,Persistent,在Java中,我可以在一个方法和下一个方法之间以及在类之间保留一个变量吗 我试图从命令中获取一个变量,在QandA中修改它,并期望它一直存在,直到我再次修改它 public class Commands { int torch = 1; } _____________ public class QandA { Dostuff d = new Dostuff Commands a = new Commands(); public void torch

在Java中,我可以在一个方法和下一个方法之间以及在类之间保留一个变量吗

我试图从命令中获取一个变量,在QandA中修改它,并期望它一直存在,直到我再次修改它

    public class Commands
{
   int torch = 1;
}
_____________

public class QandA
{
     Dostuff d = new Dostuff
     Commands a = new Commands();
     public void torch
{
     System.out.println("Torch = " + torch);
     a.torch = 2;
     System.out.println("Torch = " + torch);
     d.dostuff();
}
public class dostuff
{
     public void dostuff()
   {
     // User imput is gathered here etc etc.
    QandA();
   }    
}

所以我希望输出是(一个循环)

火炬=1

火炬=2

火炬=2

火炬=2

火炬=2

火炬=2

3次循环后。 但它所做的是

火炬=1

火炬=2

火炬=1

火炬=2

火炬=1

火炬=2

经过三个周期


请帮助。

我不确定您是如何引用像
dostuff()这样的类的
QandA()[必须有编译错误]但请记住只创建一个命令实例并传递相同的实例。在您的情况下,每次创建QandA实例时,都会创建一个
命令
实例,其
torch
字段设置为1

保存数据没有问题,但是您必须知道创建和保存数据的位置

在您的例子中,您将在命令类范围内声明“torch”,作为初始化为“1”的命令的成员(我认为-语法有点滑稽)。因此,每次声明“new Command()”时,您都以一个新的“torch”变量==1开始


您可以将“torch”声明为静态,这意味着它对所有命令实例都是共享的,然后它将按照您的意愿运行,因为它不会在每次调用构造函数时都被重置(前提是您没有在构造函数中将其设置为1)。

这只是一个迂腐的观点,因为其他人已经巧妙地描述了您的问题。Luke,一般来说,您希望避免使用您所使用的公共成员,因为以后很难用业务逻辑(验证等)封装它们,也很难处理线程安全性。使用getter/setter,除非您非常确定该类总是这个原语,总是在一个线程中使用,并且不会被太多的类使用。只是一个指针。把我的代码从一团乱麻翻译成直截了当是一个错误。:)谢谢你的帮助!我已经为此工作了几个小时D