我想知道自动包装器在被方法调用时到底如何表现。在 Java 中,基本类型通过值调用,对象通过引用调用,但是自动包装器呢?
它们是按值调用还是按引用调用?
如果确实按值调用它们,那么通过引用调用它们的最佳方法是什么? (更多层包裹?)
最佳答案
I was wondering how exactly Auto Wrappers behave when called by a method. In Java, primitive types get called by value and objects get called by reference, but what about Auto Wrappers?
这些所谓的“自动包装器”只是普通的类。当您调用它们的方法以及传递它们时,它们的行为就像普通类一样。
当您谈论“按值调用”或“按引用调用”值时,这是术语上的废话。 “按值”和“按引用”是关于参数传递语义,而不是关于调用语义,并且在 Java 中一切都是按值传递。一切。对于引用类型,您将按值传递引用。
(对于真正的“按引用传递”,您实际上是(通常)调用者变量之一的地址。然后(假设的)被调用方法可以更新该变量。在 Java 中您不能这样做。语言不支持,JVM指令集也不支持。)
包装器类型唯一不寻常的事情是它们可以进行自动装箱和自动拆箱。这与参数传递语义正交,因为这些都是“转换”的示例,并且所有转换都发生在传递参数之前。
关于Java 自动包装器 : Behavior as method inputs?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36101278/