假设我有一个典型的java类,如
public class Waiter {
private int Id;
private String name;
private int active;
//Including constructor, getter and setter
}
现在我想创建一个可以更改活动变量的函数。我知道,在这种情况下,我可以简单地使用setter,但我想在我需要的时候调用一个函数。
我的功能目前看起来像这样
public void login(int a) {
int b = 2;
a = b + a;
}
现在我想用
来调用它login(2)
但它不会在main中更新我的值?
答案 0 :(得分:2)
您的login(int a)
方法背后的逻辑错误。
通过调用login(2)
,您将2的值(call-by-value)传递给本地变量 a
,然后将b
添加到其中它确实有效如果你打算在最后打印价值:
public void login(int a) {
int b = 2;
a = b + a;
System.out.println( a ); // this prints 4 if login(2) is called.
}
要保留此值,您必须将新值分配给另一个变量,例如active = a + b;
或返回值,以便该方法返回该值,并可以外包存储:
public int login(int a) {
int b = 2;
a = b + a;
return a;
}
这将允许您在主方法中执行以下操作:
public static void main( String[] args )
{
Waiter wa = new Waiter();
int stored = wa.login( 2 );
System.out.println( stored ); // prints also 4
}