用静态方法VS静态void反转一个数组?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用静态方法VS静态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;
    }
}
答案

首先,您的案例中的两种方法都是静态的。他们只有不同的回报类型

对于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

但是你应该修改一个不改变初始数组的方法,因为你可能会遇到麻烦(调用实用程序方法不应该修改初始值)

以上是关于用静态方法VS静态void反转一个数组?的主要内容,如果未能解决你的问题,请参考以下文章

VS编译linux项目生成静态库并在另一个项目中静态链接的方法

java中,定义一个静态类,里面有一个public void aMethod();实现某种功能,该方法算不算静态方法?

VS2008里,创建一个win32 static libraryd静态库后,怎么添加一个 symbol “TETLIBRARY” 到编译开关?

无法对非静态方法 getAssets() 进行静态引用 - 无法在片段中播放音频

静态链表循环链表双向链表(C代码实现)

从活动中调用片段中的非静态方法?