java - 如何调用一个方法两次但返回不同的变量
问题描述
我试图在 main 中调用一个方法两次:
System.out.println(switchBool(b));
System.out.println(switchBool(b));
这是我做的方法:
public static boolean switchBool(boolean b){
b=true;
if(b==true){
b = false;
}
b=false;
if(b==false){
b=true;
}
return b;
第一次调用它应该返回“false”,第二次调用它应该返回“true”,但对于我的输出,我不断得到:
true
true
有什么我做错了吗?我是java的初学者。
解决方案
布尔值b
是一个局部变量并且存在于堆栈中。因此,当方法switchBool
返回时它会丢失。
你有两个选择来解决它。您可以创建b
一个静态变量,也可以创建b
一个实例变量并switchBool
转换为实例方法。
我会推荐一个实例变量。
public class BooleanToggle {
private boolean value;
public boolean toggle(){
value = !value;
return value;
}
// I put the main method here for simplicity. Usually it is put somewhere else.
public static void main(String[] args) {
BooleanToggle booleanToggle = new BooleanToggle();
System.out.println(booleanToggle.toggle());
System.out.println(booleanToggle.toggle());
}
}
结果将是
true
false
我们b
从堆栈移动到堆,这样它就可以在方法调用中存活下来。