我遇到了
java.math.BigDecimal
和android.icu.math.BigDecimal
,因为我需要在项目中使用BigDecimal
。
我意识到 Android
BigDecimal
需要 API 级别 24
这两个类有什么不同?不知道Android实现上有没有性能优化?
android.icu.math.BigDecimal
是 ICU 库(Unicode 国际组件)的一部分。自 API 24 起,Android 框架公开了一些 ICU4J 类供您使用。 有关 Unicode 和 I18N 支持的 Android 文档 指出:
和java
包中的某些类与这些类具有等效项 在 ICU4J 中发现。然而,ICU4J 通常为以下方面提供更广泛的支持: 标准和语言。android
不要对上面的引用感到困惑,因为 ICU 类确实驻留在
android
包中。为了避免冲突,它们从 android.icu
移至 com.ibm.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 重新创建类以向现有类添加一些功能。
我认为 TLDR 的区别在于
java.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