我们如何在 main 方法中通过其他方法更新布尔值

Vin*_*rma 2 java

请忽略格式和句子相关问题。

class ABC 
{   
 public void change(Boolean x, Boolean y, StringBuffer s)
 {
    x=true;
    y=true;
    s.append("vinay");
 }

 public static void main(String a[])
 {
    Boolean x = false;
    Boolean y = false;
    x=false;
    y=false;
    StringBuffer s = new StringBuffer();
    s.append("jasi");
    ABC p= new ABC();
    p.change(x,y,s);

    System.out.println(x);
    System.out.println(y);
    System.out.println(s);      
 }
}
Run Code Online (Sandbox Code Playgroud)

我想获得我在 main() 方法中对布尔 x,y 的 change() 方法所做的所有更改,因为我们在 main 函数中修改了 s。有什么方法可以让我们在 main 方法中获得修改后的值。

Ale*_*exR 5

Java按值传递参数,因此在您的change()方法中所做的所有更改对调用者都是不可见的。

为了做您想做的事情,您可以: 1. 将此变量定义为类成员。2. 将它们作为方法的返回值返回。是的,您只受一个返回值的限制,但是如果您想创建布尔数组或创建包含两者的特殊类。3.您可以传递给包含布尔值的方法可变容器。其中一种方法是AtomicBoolean用于此:

public void change(AtomicBoolean x, AtomicBoolean y, StringBuffer s) {
    x.set(true);
    y.set(true);
    s.append("vinay");
}

public static void main(String a[]) {
    AtomicBoolean x = new AtomicBoolean(false);
    Boolean y =  = new AtomicBoolean(false);
    change(x, y);
    System.out.println(x.get() + ", " + y.get()); // will print true true
}
Run Code Online (Sandbox Code Playgroud)