Java 函数使用后,如何使参数保持其值不变?
我正在学习Java,我想不出这一点。我有一个简单的更改函数,可以更改两个参数之间的值。如果x=5且y=7,则执行后x=7且y=5。在java中有没有一种方法可以像C++那样使用这些值来改变这些值?Java 函数使用后,如何使参数保持其值不变?,java,function,Java,Function,我正在学习Java,我想不出这一点。我有一个简单的更改函数,可以更改两个参数之间的值。如果x=5且y=7,则执行后x=7且y=5。在java中有没有一种方法可以像C++那样使用这些值来改变这些值? public static void change(int x, int y){ x=x+y; y=x-y; x=x-y; } 在Java中,int是一种基本类型。因此,对于任何基元类型,都不能这样做。Java中的每个原语都有一个装箱原语,但这里的Integer是不可
public static void change(int x, int y){
x=x+y;
y=x-y;
x=x-y;
}
在Java中,int是一种基本类型。因此,对于任何基元类型,都不能这样做。Java中的每个原语都有一个装箱原语,但这里的Integer是不可变的(一旦初始化就不能改变它的状态),所以即使使用Integer也不起作用 因此,您有两种解决方案: 1) 从中使用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;
}
}
在更改方法中
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.getMyInt()或y.getMyInt()
从x或y中获取值时,您将获得更新的值。您不能,您必须返回更改的值或传入具有可变内容的引用类型,而不是原语。