请忽略格式和句子相关问题。
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 方法中获得修改后的值。
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)
| 归档时间: |
|
| 查看次数: |
7099 次 |
| 最近记录: |