Java 以不同的方法操作数组

Java 以不同的方法操作数组,java,arrays,Java,Arrays,在我的课本中,至少对我来说,没有什么奇怪的,也就是说,我有一个类,这个类有一个方法,它接受整数(或任何东西)上的数组,然后用任何算法对它排序。奇怪的是,他只是调用该方法并传递数组,而该方法不会返回任何无效的内容 ..... sort(anArray) ..... ..... ..... public void sort(int[] array) ..... 这将立即更新要排序的数组。我想的是,该方法将返回另一个数组,该数组是相同的数组,但按顺序排列 ..... arrayx = sort(an

在我的课本中,至少对我来说,没有什么奇怪的,也就是说,我有一个类,这个类有一个方法,它接受整数(或任何东西)上的数组,然后用任何算法对它排序。奇怪的是,他只是调用该方法并传递数组,而该方法不会返回任何无效的内容

.....
sort(anArray)
.....
.....
.....
public void sort(int[] array)
.....
这将立即更新要排序的数组。我想的是,该方法将返回另一个数组,该数组是相同的数组,但按顺序排列

.....
arrayx = sort(anArray)
.....
.....
.....
public int[] sort(int[] array)
.....
你能给我解释一下区别吗。

例1 在本例中,正在修改传入的数组。一无所获

之所以能够做到这一点,是因为Java将数组作为函数的参数来处理

您应该看看这个问题,它解释了数组参数是如何工作的:

例2 在本例中,在函数内创建一个新数组,然后返回

由于未修改原始数组,您需要将函数调用的结果存储在一个变量中以获得排序数组。

1)在这种情况下,您的函数返回
void
(无),这意味着此函数具有
副作用

public void sort(int[] array)
2) 您的函数返回
int[]
,它可能是
纯函数
(取决于函数代码)

关于
副作用
纯功能


大多数排序方法都会就地对数组进行排序,因此不需要单独的返回值。如果要在排序之前创建副本,也可以。
arrayx = sort(anArray);
...
public int[] sort(int[] array) { ... }
public void sort(int[] array)
public int[] sort(int[] array)