在Java中,我可以在一个方法和下一个方法之间以及在类之间保留一个变量吗?
在Java中,我可以在一个方法和下一个方法之间以及在类之间保留一个变量吗 我试图从命令中获取一个变量,在QandA中修改它,并期望它一直存在,直到我再次修改它在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
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