Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 函数使用后,如何使参数保持其值不变?_Java_Function - Fatal编程技术网

Java 函数使用后,如何使参数保持其值不变?

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是不可

我正在学习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是不可变的(一旦初始化就不能改变它的状态),所以即使使用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中获取值时,您将获得更新的值。

您不能,您必须返回更改的值或传入具有可变内容的引用类型,而不是原语。