In Java ist BigInteger unveränderlich, aber ich möchte verstehen, warum es oft verwendet wird, um eine Menge Berechnungen durchzuführen, die viele Objekte erzeugen können. Es fühlt sich irgendwie intuitiv an, es nicht unveränderlich zu machen. Die Situation, die mir in den Sinn kommt, ist etwas von String-Operationen und dann die Option von StringBuilder. Sollte es ein unveränderbares Gegenstück zu BigInteger geben? Ich denke, dass es in vielen Situationen nützlich sein könnte.Warum ist BigInteger in Java so konzipiert, dass es unveränderbar ist?
Edit: Ich kenne die Vorteile der Unveränderlichkeit und wie es in vielen Fällen vorteilhaft ist. Ich wollte nur die Vorteile von BigInteger verstehen. Ich habe BigInteger verwendet, um die Fakultät für große Zahlen zu berechnen. Also hätte ich einen veränderbaren BigInteger vorgezogen. In ähnlicher Weise wird BigInteger für Berechnungen verwendet, bei denen das Ergebnis viel größer als int ist. Für andere Fälle gibt es BigDecimal.
Sie können 'BitSet' als (Art-) veränderbaren' BigInteger' verwenden. –
Kurzlebige Objekte sind billig und unveränderliche Objekte haben viele Vorteile. – chrylis
* "Ich denke, es könnte in vielen Situationen nützlich sein." * ... es könnte für einige wirklich super-Performance kritische Situationen wichtig sein, aber wahrscheinlich nicht so viele Situationen insgesamt wie Sie vermuten. Wenn Sie jedoch einen Profiling-erprobten performancekritischen Codeblock haben, kann eine änderbare Companion-Klasse die Antwort sein. – scottb