Java 为什么交换函数对我不起作用?
我开始学习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
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当然,但这是一个他们可以查找的关键字。