【问题标题】:Methods that change a value, and not return anything更改值但不返回任何内容的方法
【发布时间】:2011-10-28 15:37:23
【问题描述】:

请问改变变量内容但不返回任何内容的方法的术语是什么。

例如在 Java 中的 java.util.Arrays 类中,静态方法 sort 在内部对数组进行排序并将排序后的数组设置为 原始数组变量(不确定)。

import static java.util.Arrays.sort;
public class bs {
public static void main(String [] args){

    int[] arr = {3,2,4,8,2,5,33,12,19,15,20};
    sort(arr); // doing this stuff <<<< and not int [] arr1 = sort(arr); 
  }
 }

1 - 这种方法是否有专门的术语,

和;

2 - 这在内部是如何工作的?它会删除原始变量并将排序后的值分配给具有相同名称的新变量吗??

谢谢!!

【问题讨论】:

    标签: java arrays


    【解决方案1】:

    我通常称它为 mutator - 或者只是谈论它有副作用。 (通常,mutator 是您在一个对象上调用 的方法,它会更改该对象的状态。在这种情况下,我们正在更改参数/参数所引用的对象,稍微 em> 不同。)

    至于它是如何工作的——了解变量、引用和对象之间的区别很重要。

    这个方法调用:

    sort(arr);
    

    将arr 变量的值复制为sort 方法中的参数值。该值是对对象(本例中为数组)的引用。该方法根本不会改变arr 的值——它仍然是对同一个数组的引用。但是,该方法会更改数组的内容(即哪些元素具有哪些值)。

    【讨论】:

      【解决方案2】:

      有一个名字:反模式;)

      说真的,我认为过度使用它们是一种不好的做法:方法不应该尽可能地修改它们之外的世界,将结果放在返回的临时数组中要好得多(而且更面向对象)在您的处理结束时。如果您不想这样做,并使用改变其他元素的方法,您将遇到您可以避免更多的各种问题(破坏封装、并发问题等)不用那么做很容易。

      例外:当然是二传手。

      至于它是如何工作的,Jon Skeet 在他的回答中说过。

      【讨论】:

        【解决方案3】:

        返回值的方法有时称为“函数”,不返回任何内容的方法称为“过程”。

        【讨论】:

          【解决方案4】:

          方法和方法头(Public static void main string 或类似的东西)是方法头。 Main 方法是所有独立 Java 应用程序的通常起点。 “静态”一词是一个方法修饰符。 “void”表示该方法在调用时不返回值。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2019-10-23
            • 2020-01-26
            • 2018-10-21
            • 1970-01-01
            • 1970-01-01
            • 2013-05-04
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多