为啥交换功能对我不起作用? [复制]
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
方法中有 i
和 j
的副本。您确实交换了值 i
和 j
,但仅在 swap
方法的范围内交换了本地值 i
和 j
。 main
中的 i
和 j
未更改。
要交换值,请在 main
方法中内联实现交换代码,而不是在单独的方法中。
【讨论】:
【参考方案2】:Java 是按值传递的,即使对于引用也是如此。您正在更改原始值的副本,而不是原始值。
没有办法在 Java 中实现交换方法来执行您的建议。
【讨论】:
以上是关于为啥交换功能对我不起作用? [复制]的主要内容,如果未能解决你的问题,请参考以下文章