更改值但不返回任何内容的方法

时间:2011-10-28 15:37:24

标签: java arrays

请问什么是改变变量内容的方法,而不是返回任何内容。

例如,在java.util.Arrays类的Java中,静态方法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 - 这在内部如何运作?它是否删除原始变量并将已排序的值分配给具有相同名称的新变量或??

谢谢!

4 个答案:

答案 0 :(得分:8)

我通常称之为 mutator - 或者只是说它有副作用。 (通常一个mutator是一个你在上调用一个对象的方法,它改变了该对象的状态。在这种情况下,我们改变了参数/参数引用的对象,略微不同。)

至于它是如何工作的 - 理解变量引用对象之间的区别非常重要。

此方法调用:

sort(arr);

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

答案 1 :(得分:3)

有一个名称:反模式;)

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

例外:当然是设置者。

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

答案 2 :(得分:1)

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

答案 3 :(得分:0)

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