Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/402.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.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 - Fatal编程技术网

Java 为什么交换函数对我不起作用?

Java 为什么交换函数对我不起作用?,java,Java,我开始学习java,并构建替换数字的“交换”函数 当我运行此代码时,它不会替换它们 我怎样才能解决这个问题 public static void swap(double i, double j){ double temp = i; i = j; j = temp; } 这主要是: double i = 1; double j = 2; System.out.println(i+" - "+ j); swap(i, j); System.out.p

我开始学习java,并构建替换数字的“交换”函数

当我运行此代码时,它不会替换它们

我怎样才能解决这个问题

public static void swap(double i, double j){
        double temp = i;
        i = j;
        j = temp;
}
这主要是:

double i = 1;
double j = 2;
System.out.println(i+" - "+ j);
swap(i, j);
System.out.println(i+" - "+ j);

在控制台中,我看到:

1.0 - 2.0
1.0 - 2.0
我需要看到:

1.0 - 2.0
2.0 - 1.0

在Java中,一切都是按值传递的,包括原语类型。在
swap
方法中有
i
j
的副本。您确实交换了值
i
j
,但仅交换了
swap
方法范围内的本地值
i
j
main
中的
i
j
没有改变


要交换值,请在
main
方法中内联实现交换代码,而不是在单独的方法中。

Java是按值传递的,即使是用于引用。您正在更改原始值的副本,而不是原始值的副本


没有办法在Java中实现一个交换方法来做你建议的事情。

Java是按值传递的。哦,上帝,又不是这样了。放弃线程@SotiriosDelimanolis:这句话对Java新手来说毫无意义。@RobertHarvey当然,但这是一个他们可以查找的关键字。