0

参照を参照しているオブジェクトの値がどのようになるかわかりません。ちなみに、私は整数について話しているのではありません。

この方法を作りたいです。

swapNN(NaturalNumber j, NaturalNumber n)

jと の参照を交換したいのですがn、スコープが限られているため、メソッド内で処理しているときにそれを行う方法がわかりません。

また、 mutable を二乗するメソッドをどのように作成しNaturalNumberますか?

このような?

private static void square(NaturalNumber j)
4

2 に答える 2

1

j と n の参照を入れ替えたい

値渡しであるため、Javaではこれを行うことはできません。これを実現する 1 つの方法は、2 つの参照を 2 つのフィールドに保持し、それらを交換するラッパー クラスを用意することです。

また、変更可能な NaturalNumber を 2 乗するメソッドを作成するにはどうすればよいですか?

NaturalNumberそれはすべて、の実装方法に依存します。それをそれ自体で乗算します。BigIntegerオーバーフローしないように、より大きなプリミティブの 1 つまたは 1 つを使用することを検討してください。

于 2013-10-02T03:59:06.617 に答える
0

参照 (j,n) が値で渡されるため、それらを「交換」することはできません。つまり、「元の」参照は変更されません。

そうは言っても、NaturalNumber のコンテンツが変更可能な場合 (つまり、そのメンバーが宣言されfinalていない場合)、それらのコンテンツを相互に「コピー」することで回避できます (「スワップ」で行うように、3 番目の NaturalNumber オブジェクトを使用します)。

「コンテンツを交換する」ことで、参照を「交換する」のと同じ効果が得られます。

于 2013-10-02T04:09:14.703 に答える