我不知道引用引用的对象的值如何。顺便说一句,我不是在谈论整数。
我想做这个方法。
swapNN(NaturalNumber j, NaturalNumber n)
j
我希望交换和的引用,n
但由于范围有限,当我在方法内部处理时,我不知道如何做到这一点。
另外,我将如何制作一个平方 mutable 的方法NaturalNumber
?
像这样?
private static void square(NaturalNumber j)
我不知道引用引用的对象的值如何。顺便说一句,我不是在谈论整数。
我想做这个方法。
swapNN(NaturalNumber j, NaturalNumber n)
j
我希望交换和的引用,n
但由于范围有限,当我在方法内部处理时,我不知道如何做到这一点。
另外,我将如何制作一个平方 mutable 的方法NaturalNumber
?
像这样?
private static void square(NaturalNumber j)
我希望交换 j 和 n 的引用
你不能在 Java 中这样做,因为它是按值传递的。实现此目的的一种方法是拥有一个包装类,该类将两个引用保存在两个字段中并交换它们。
另外,我将如何制作一个平方可变 NaturalNumber 的方法?
这一切都取决于如何NaturalNumber
实施。将其与自身相乘。考虑使用一个BigInteger
或一个更大的原语,以免溢出。
您不能“交换”它们,因为引用 (j,n) 是按值传递的——这意味着,“原始”引用不会改变。
也就是说,如果 NaturalNumber 的内容是可变的(也就是说,没有声明它的成员final
),您可以通过将它们的内容“复制”到彼此中来解决它(使用第三个 NaturalNumber 对象,就像您在“交换”中所做的那样)。
通过“交换内容”,您将获得与“交换”引用相同的效果。