我需要在项目中使用ISO 8859
时遇到java.math.BigDecimal
和android.icu.math.BigDecimal
。
我已经意识到Android BigDecimal
需要API级别24
这两个类之间有什么区别?我想知道Android实施中是否有任何性能优化?
答案 0 :(得分:5)
android.icu.math.BigDecimal
是ICU library(Unicode的国际组件)的一部分。从API 24开始,Android框架公开了一些ICU4J类供您使用。 Android documentation on Unicode and I18N support指出:
java
和android
包中的某些类具有与这些类等效的类 在ICU4J中找到。但是,ICU4J通常会为 标准和语言。
不要被上面的引用所迷惑,因为ICU类确实位于android
包中。为了避免冲突,它们已从android.icu
移到com.ibm.icu
。
特别是关于BigDecimal
:I found a discussion on the internet得出的结论是,BigDecimal
在Java中可用之前在ICU中可用,并且出于兼容性目的而保留在库中。
底线:使用任何您喜欢的实现方式,但是java.math.BigDecimal
在将来不太可能被弃用。
答案 1 :(得分:1)
使用java.math.BigDecimal
或android.icu.math.BigDecimal
,两者之间不会有性能差异。由于这些是基本类,因此参考Java BigDecimal
重新创建了Android BigDecimal
。
如果您问两者之间的区别,那么
https://docs.oracle.com/javase/7/docs/api/java/math/BigDecimal.html https://developer.android.com/reference/java/math/BigDecimal
Android重新创建类以向现有类中添加一些功能。
答案 2 :(得分:-3)
我认为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