为什么java中的BigInteger被设计为不可变的?
在
java中,BigInteger是不可变的,但我想理解为什么,因为很多时候它被用来做很多可以产生很多对象的计算.所以,让它变得不可变感觉有点直观.我想到的情况就是字符串操作,然后是StringBuilder的选项.应该有BigInteger的非永久性对应物吗?我认为在很多情况下这可能是有益的.
编辑:我知道不变性的好处以及它在许多情况下是如何有益的.我只是想了解一下BigInteger的好处.我用BigInteger来计算大数的阶乘.所以,我更喜欢可变的BigInteger.类似地,BigInteger将用于结果远大于int的计算.对于其他情况,有BigDecimal. 解决方法
Josh Bloch的
Effective Java在“第15项:最小化可变性”中解释了不可变类的好处:
不可变对象很简单,因为对象只能存在于一个状态 – 它创建的状态.简单代码往往具有更少的错误.由于无法修改对象,因此在没有外部同步的情况下也是线程安全的. Bloch使用BigInteger作为示例解决了不可变类的性能问题:
所以在内部,BigInteger已经为您做了一些优化.如果你真的想要一个可变的BigInteger,你可以使用 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- java – Manifest Merger Failed – 访问google maps v2权限
- JSP Request.isRequestedSessionIdFromURL()方法:判断sess
- java – JPA错误:持久关系时出现重复键错误
- 多线程 – 可以在Windows上等待Network.Socket.accept的Has
- java – Eclipse 3.5.1编译器错误:由于对所需库../rt.jar的
- Java Generics – 可比较的界面
- java – 在JSpinner上格式化日期
- 基于java中反射的总结分析
- java – 使用AtomicReference的Singleton
- java – <?扩展A>不会接受A的子类