用静态方法VS静态数组反转数组?

时间:2019-02-05 14:35:39

标签: java arrays methods static void

我发现了几个线程如何反转数组。但是,我不理解为什么不能同时为静态方法和void方法使用相同的代码。

有人可以在以下示例中解释差异吗?

对于静态方法,我们可以编写:

public static double[] reverse (double[] a) 
{
        int n = a.length;
        for (int i = 0; i < n/2; i++) 
        {
            double temp = a[i];
            a[i] = a[n-(i+1)];
            a[n-(i+1)] = temp;
        }
        return a;
}

但是对于静态空隙,我们有:

public static void reverse (double[] a) 
{
    for (int i = 0, j = a.length-1; i < j; i++, j--)
    {
        double temp = a[i];
        a[i] = a[j];
        a[j] = temp;
    }
}

1 个答案:

答案 0 :(得分:1)

首先,这两种方法都是静态的。他们只是有不同的返回类型

对于static void reverse (double[] a)情况,您这样做:

double[] arr = //some array
reverse(arr); //at this point arr is reversed so that you can use it 
reversedArr = arr; //or assign to different variable

如果您必须反转一些内部数组,实际上没关系,但是我仍然不喜欢它,因为数组更改不太明显。我认为公开这种方法不是很好...

static double[] reverse (double[] a)可以成为某些实用程序类的一部分,即

double[] arr = //some array
reversedArr = ArrayUtils.reverse(arr); // now you can reuse method and you actually see that you changed the array

但是您应该修改一种方法,不要更改初始数组,因为这样可能会遇到麻烦(调用实用程序方法不应修改初始值)