在我的教科书中,至少对我来说没有什么看起来很奇怪,也就是说我有一个类,这个类有一个方法,它在整数(或任何东西)上取一个数组,然后用任何一种方式对它进行排序算法。奇怪的是他只是调用方法并传递数组,并且该方法不会返回任何无效的东西。
.....
sort(anArray)
.....
.....
.....
public void sort(int[] array)
.....
这将立即更新anArray进行排序。我想到的是该方法将返回另一个数组,该数组是相同的数组但已排序,因此它将是
.....
arrayx = sort(anArray)
.....
.....
.....
public int[] sort(int[] array)
.....
你可以向我解释一下这些差异。
答案 0 :(得分:1)
sort(anArray);
...
public void sort(int[] array) { ... }
在此示例中,正在修改已传入的数组。没有任何回报。
这可以做到,因为Java将数组作为函数的参数处理。
您应该查看这个解释数组参数如何工作的问题:Are arrays passed by value or passed by reference in Java?
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 effect
和pure function
: