为什么交换功能对我不起作用?

时间:2013-09-17 16:01:24

标签: java

我开始学习java,并构建替换数字的'swap'函数。

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

我怎么能解决这个问题?

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

2 个答案:

答案 0 :(得分:1)

在Java中,所有内容都按值传递,包括基本类型。您的i方法中包含jswap的副本。您确实交换了值ij,但只更换了i方法范围内的本地值jswapi中的jmain未被更改。

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

答案 1 :(得分:1)

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

无法在Java中实现交换方法来执行您的建议。