我意识到Android的BigDecimal需要API级别24。
这两个类有什么区别?我想知道Android实现中是否有任何性能优化?
android.icu.math.BigDecimal
是ICU库(Unicode国际组件)的一部分。自API 24以来,Android框架公开了一些ICU4J类供您使用。有关Unicode和I18N支持的Android文档指出:
在
java
和android
包中有一些类与ICU4J中找到的类相对应。但是,ICU4J通常为标准和语言提供更广泛的支持。
不要被上述引用所困扰,因为ICU类确实位于android
包中。它们从com.ibm.icu
移至android.icu
,以避免冲突。
关于BigDecimal
:我在互联网上找到了一个讨论,结论是BigDecimal
在Java之前就已经存在于ICU中,并且为了兼容性而保留在库中。
底线:使用任何您喜欢的实现,但是java.math.BigDecimal
不太可能在未来被弃用。
可以使用java.math.BigDecimal
或android.icu.math.BigDecimal
,两者之间不会有性能差异。因为这些都是基本类,Android的BigDecimal
是参考Java的BigDecimal
重新创建的。
如果您想知道两者之间的区别,则:
https://docs.oracle.com/javase/7/docs/api/java/math/BigDecimal.html https://developer.android.com/reference/java/math/BigDecimal
Android重新创建类以向现有类添加某些功能。
kotlin.Number
的子类。 - Mosiusjava.math.BigDecimal
是为 Java 设计的,而 android.icu.math.BigDecimal
是为 Kotlin 设计的。https://developer.android.com/reference/java/math/BigDecimal https://developer.android.com/reference/kotlin/android/icu/math/BigDecimal
kotlin
无关。 - Mosiuskotlin.Any ↳ kotlin.Number ↳ android.icu.math.BigDecimal
文档也全部使用kotlin编写。 - IsaiahJkotlin
语言中没有被实现。 - Mosius