为啥交换功能对我不起作用? [复制]

Posted

技术标签:

【中文标题】为啥交换功能对我不起作用? [复制]【英文标题】:why the swap func didnt work for me? [duplicate]为什么交换功能对我不起作用? [复制] 【发布时间】:2013-09-22 04:04:09 【问题描述】:

我开始学习 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 是按值传递的。 天啊,又不是这个了。放弃线程! @SotiriosDelimanolis:这句话对 Java 新手来说毫无意义。 @RobertHarvey 当然,但这是他们可以查找的关键字。 【参考方案1】:

在 Java 中,一切都是按值传递的,包括原始类型。您的 swap 方法中有 ij 的副本。您确实交换了值 ij,但仅在 swap 方法的范围内交换了本地值 ijmain 中的 ij 未更改。

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

【讨论】:

【参考方案2】:

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

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

【讨论】:

以上是关于为啥交换功能对我不起作用? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

为啥灯箱 jQuery 插件对我不起作用?

为啥 '@drop' 事件在 vue 中对我不起作用?

为啥命名:false 对我不起作用

为啥 Class.forName() 对我不起作用?

为啥 BlockInput 对我不起作用?我忘了啥吗?

为啥发布到 PayPal 沙盒 API 对我不起作用?