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

Java 方法更改值,但不返回任何内容,java,arrays,Java,Arrays,请问什么是改变变量内容而不返回任何内容的方法的术语 例如,在Java的Java.util.Arrays类中,静态方法sort对数组进行内部排序,并将排序后的数组设置为原始数组变量(不确定) 导入静态java.util.Arrays.sort; 公共类学士{ 公共静态void main(字符串[]args){ int[]arr={3,2,4,8,2,5,33,12,19,15,20}; sort(arr);//做这件事我通常称之为mutator,或者只是说它有副作用。(通常mutator是一个方法

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

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

导入静态java.util.Arrays.sort;
公共类学士{
公共静态void main(字符串[]args){
int[]arr={3,2,4,8,2,5,33,12,19,15,20};
sort(arr);//做这件事我通常称之为mutator,或者只是说它有副作用。(通常mutator是一个方法,你对一个对象调用它来改变这个对象的状态。在这种情况下,我们改变的是参数/参数所引用的对象,这有点不同。)

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

此方法调用:

sort(arr);

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

有一个名称:反模式;)

严重的,我认为过度使用他们是一个坏的做法:尽可能地,方法不应该修改他们以外的世界,这是更好的(和更多的面向对象)。将结果放入处理结束时返回的临时数组中。如果您不想这样做,并且使用变异其他元素的方法,您将遇到各种各样的问题(封装中断、并发性问题等),如果不这样做,您可以更轻松地避免这些问题

例外:当然是二传手


至于它是如何工作的,Jon Skeet在他的回答中说了这一点。

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

方法和方法头(
Public static void main string
或类似的东西)是方法头。Main方法是所有独立java应用程序的常用起点。单词“static”是方法修饰符。“Void”表示调用此方法时不返回值

sort(arr);