更改值的方法,不返回任何内容
请问什么是改变变量内容的方法,而不返回任何内容。
例如,在java.util.Arrays
类的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 – 这在内部如何运作? 它是否删除原始变量并将已排序的值分配给具有相同名称的新变量或??
谢谢!!
我通常把它称为变异器 – 或者只是说它有副作用。 (通常,mutator是一个在对象上调用的方法,它会更改该对象的状态。在这种情况下,我们将更改参数/参数引用的对象,这稍有不同。)
至于它是如何工作的 – 理解变量 , 引用和对象之间的区别很重要。
这个方法调用:
sort(arr);
将arr
变量的值复制为sort
方法中的参数值。 该值是对象的引用 (在本例中为数组)。 该方法根本不改变arr
的值 – 它仍然是对同一个数组的引用。 但是,该方法会更改数组的内容 (即哪些元素具有哪些值)。
有一个名称:反模式;)
说真的,我认为过度使用它们是一种不好的做法:尽可能地,方法不应该修改它们之外的世界,将结果放在最后返回的临时数组中要好得多(而且更加面向对象)你的处理。 如果您不想这样做,并使用改变其他元素的方法,您将遇到所有类型的问题(打破封装,并发问题等),如果不这样做,您可以更轻松地避免这些问题。
例外:当然是setter。
至于它是如何工作的,Jon Skeet在他的回答中说。
返回值的方法有时称为“函数”,而不返回任何“过程”的方法。
方法和方法头( Public static void main string
或类似的东西)是方法头。 主要方法是所有独立Java应用程序的通常起点。 单词“static”是方法修饰符。 “Void”表示此方法在调用时不返回值。
- 使用Swing Timer更新标签
- 任何在Eclipse中隐藏注释的方法
- 在TestExecutionListener类中为BeforeClass junit使用Autowired
- GameLogic,x连续游戏
- 缺少`server’JVM(Java \ jre7 \ bin \ server \ jvm.dll。)
- JSF – (转义特殊字符)
- java.lang.IncompatibleClassChangeError:class org.springframework.core.type.classreading.ClassMetadataReadingVisitor
- 如何有效地在Java中生成安全的随机字母数字字符串?
- 为什么NetBeans在OS X上运行我的程序,而不是将其构建到JAR中?