首页 > 解决方案 > 函数使用后如何使参数保持其值不变?

问题描述

我正在学习Java,但我无法弄清楚。我有一个简单的更改函数,可以更改它们之间的 2 个参数的值。如果 x = 5 且 y = 7,则执行后 x= 7 且 y = 5。Java 中有没有办法像在使用 &x、&y 的 c++ 中那样保持这些值的变化?

public static void change(int x, int y){
    x=x+y;
    y=x-y;
    x=x-y;
}    

标签: javafunction

解决方案


在 Java 中 int 是一种原始类型。所以对于任何原始类型你都做不到。Java 中的每个原语都有一个盒装原语,但这里 Integer 是不可变的(一旦初始化就不能改变它的状态),所以即使使用 Integer 也行不通。

所以你有两个解决方案:

1)使用来自apache commons jar的MutableInt 。

2)为它创建一个包装类,如下所示并使用它。

public class MutableInt {

private int myInt; //default initialized with 0

public int getMyInt(){
 return myInt;
}

public void setMyInt(int myInt) {
 this.myInt = myInt;
}

}

change方法里面

public static void change(MutableInt x, MutableInt y){
    x.setMyInt(x.getMyInt() + y.getMyInt());
    y.setMyInt(x.getMyInt() - y.getMyInt());
    x.setMyInt(x.getMyInt() - y.getMyInt());
} 

然后,当您使用x 或 yx.getMyInt() or y.getMyInt()获取值时,您将获得更新的值。


推荐阅读