在单独的方法中操作数组

时间:2016-12-09 00:26:43

标签: java arrays

在我的教科书中,至少对我来说没有什么看起来很奇怪,也就是说我有一个类,这个类有一个方法,它在整数(或任何东西)上取一个数组,然后用任何一种方式对它进行排序算法。奇怪的是他只是调用方法并传递数组,并且该方法不会返回任何无效的东西。

.....
sort(anArray)
.....
.....
.....
public void sort(int[] array)
.....

这将立即更新anArray进行排序。我想到的是该方法将返回另一个数组,该数组是相同的数组但已排序,因此它将是

.....
arrayx = sort(anArray)
.....
.....
.....
public int[] sort(int[] array)
.....
你可以向我解释一下这些差异。

2 个答案:

答案 0 :(得分:1)

示例1

sort(anArray);
...
public void sort(int[] array) { ... }

在此示例中,正在修改已传入的数组。没有任何回报。

这可以做到,因为Java将数组作为函数的参数处理。

您应该查看这个解释数组参数如何工作的问题:Are arrays passed by value or passed by reference in Java?

示例2

arrayx = sort(anArray);
...
public int[] sort(int[] array) { ... }

在此示例中,在函数内部创建一个新数组,然后返回。

由于原始数组未被修改,因此需要将函数调用的结果存储在变量中以获取已排序的数组。

答案 1 :(得分:0)

1)在这种情况下,你的函数返回void(无),这意味着这个函数带有side effect

public void sort(int[] array)

2)你的函数返回int[],它可能是pure function(它取决于函数代码)

public int[] sort(int[] array)

关于side effectpure function