Java AutoWrappers:作为方法输入的行为?
Java AutoWrappers: Behavior as method inputs?
我想知道 Auto Wrappers 在被方法调用时的行为究竟如何。在 Java 中,基本类型按值调用,对象按引用调用,但 Auto Wrappers 呢?
它们是按值调用还是按引用调用?
如果确实按值调用它们,那么按引用调用它们的最佳方式是什么? (更多层包装?)
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?
这些所谓的"auto wrappers"就是普通的类。当您对它们调用方法以及传递它们时,它们的行为与普通 类 一样。
当您谈论值是 "called by value" 或 "called by reference" 时,那是术语上的废话。 "by value" 和 "by reference" 是关于参数传递语义,而不是关于调用语义,在 Java 中一切都是按值传递的。一切。对于引用类型,您将按值传递引用。
(使用 true "pass by reference",你实际上是(通常)调用者变量之一的地址。然后(假设的)被调用方法可以更新该变量。你不能这样做Java。语言不支持,JVM指令集不支持。)
包装器类型唯一不寻常的地方是它们可以进行自动装箱和自动拆箱。这与参数传递语义正交,因为它们都是 "conversions" 的示例,并且所有转换都发生在 在 参数传递之前。
我想知道 Auto Wrappers 在被方法调用时的行为究竟如何。在 Java 中,基本类型按值调用,对象按引用调用,但 Auto Wrappers 呢?
它们是按值调用还是按引用调用?
如果确实按值调用它们,那么按引用调用它们的最佳方式是什么? (更多层包装?)
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?
这些所谓的"auto wrappers"就是普通的类。当您对它们调用方法以及传递它们时,它们的行为与普通 类 一样。
当您谈论值是 "called by value" 或 "called by reference" 时,那是术语上的废话。 "by value" 和 "by reference" 是关于参数传递语义,而不是关于调用语义,在 Java 中一切都是按值传递的。一切。对于引用类型,您将按值传递引用。
(使用 true "pass by reference",你实际上是(通常)调用者变量之一的地址。然后(假设的)被调用方法可以更新该变量。你不能这样做Java。语言不支持,JVM指令集不支持。)
包装器类型唯一不寻常的地方是它们可以进行自动装箱和自动拆箱。这与参数传递语义正交,因为它们都是 "conversions" 的示例,并且所有转换都发生在 在 参数传递之前。