Module java.base
Package java.util

Class Currency

java.lang.Object
java.util.Currency
所有已实现的接口:
Serializable

public final class Currency extends Object implements Serializable
代表一种货币。货币通过其ISO 4217货币代码进行标识。访问ISO网站获取更多信息。

该类设计为对于任何给定货币,永远不会有多个Currency实例。因此,没有公共构造函数。您可以使用getInstance方法获取Currency实例。

用户可以通过系统属性java.util.currency.data覆盖Java运行时货币数据。如果定义了此系统属性,则其值是属性文件的位置,其中的内容是ISO 3166国家代码和ISO 4217货币数据的键/值对。值部分由货币的三个ISO 4217值组成,即字母代码、数字代码和小数单位。这三个ISO 4217值由逗号分隔。以'#'开头的行被视为注释行。如果用户需要指定新数据生效的过渡日期,则可以为每个货币条目指定可选的UTC时间戳。时间戳附加在货币属性的末尾,并使用逗号作为分隔符。如果存在并且有效,则JRE只有在当前UTC日期晚于类加载时指定的日期时才使用新的货币属性。时间戳的格式必须是ISO 8601格式:'yyyy-MM-dd'T'HH:mm:ss'。例如,

#示例货币属性
JP=JPZ,999,0

将覆盖日本的货币数据。如果JPZ是其他国家引用的现有ISO 4217货币代码之一,则现有的JPZ货币数据将使用给定的数字代码和小数单位值进行更新。

#带过渡日期的示例货币属性
JP=JPZ,999,0,2014-01-01T00:00:00

如果在2014年1月1日00:00:00 GMT之后加载Currency类,则将覆盖日本的货币数据。

在遇到语法错误的条目时,将忽略该条目并处理文件中的其余条目。对于存在重复国家代码条目的情况,对于该Currency的货币信息的行为是未定义的,并且将处理文件中的其余条目。

如果遇到具有相同货币代码但不同数字代码和/或小数单位的多个属性条目,则将忽略这些条目并处理文件中的其余条目。

建议在处理Currency或货币值时使用BigDecimal类,因为它提供了更好的浮点数处理和操作。

自从:
1.4
外部规范
另请参阅:
  • Method Details

    • getInstance

      public static Currency getInstance(String currencyCode)
      返回给定货币代码的Currency实例。
      参数:
      currencyCode - 货币的ISO 4217代码
      返回:
      给定货币代码的Currency实例
      抛出:
      NullPointerException - 如果currencyCode为null
      IllegalArgumentException - 如果currencyCode不是受支持的ISO 4217代码。
    • getInstance

      public static Currency getInstance(Locale locale)
      返回给定区域设置的国家的Currency实例。忽略区域设置的语言和变体组件。结果可能随时间变化,因为国家可能更改其货币。例如,对于欧洲货币联盟的原始成员国,该方法将返回旧的国家货币,直到2001年12月31日,并从2002年1月1日开始,各国的当地时间将返回欧元。

      如果指定的locale包含"cu"和/或"rg"Unicode扩展,则从此方法返回的实例反映了使用这些扩展指定的值。如果同时指定了"cu"和"rg",则来自"cu"扩展的货币将取代"rg"扩展的隐含货币。

      对于没有货币的领土,例如南极洲,该方法返回null

      参数:
      locale - 需要Currency实例的国家的区域设置
      返回:
      给定区域设置的国家的Currency实例,或null
      抛出:
      NullPointerException - 如果localenull
      IllegalArgumentException - 如果给定locale的国家不是受支持的ISO 3166国家代码。
    • getAvailableCurrencies

      public static Set<Currency> getAvailableCurrencies()
      获取可用货币的集合。返回的货币集合包含所有可用的货币,这可能包括代表已过时的ISO 4217代码的货币。可以修改集合而不影响运行时的可用货币。
      返回:
      可用货币的集合。如果运行时没有可用货币,则返回的集合为空。
      自从:
      1.7
    • getCurrencyCode

      public String getCurrencyCode()
      获取此货币的ISO 4217货币代码。
      返回:
      此货币的ISO 4217货币代码。
    • getSymbol

      public String getSymbol()
      获取适合在默认DISPLAY区域设置下显示此货币的符号。例如,对于美元,如果默认区域设置是美国,则符号为"$",而对于其他区域设置可能为"US$"。如果无法确定符号,则返回ISO 4217货币代码。

      如果默认DISPLAY区域设置包含"rg"(区域覆盖)Unicode扩展,则从此方法返回的符号反映了使用该扩展指定的值。

      这相当于调用getSymbol(Locale.getDefault(Locale.Category.DISPLAY))

      返回:
      适合在默认DISPLAY区域设置下显示此货币的符号
    • getSymbol

      public String getSymbol(Locale locale)
      获取适合在指定区域设置下显示此货币的符号。例如,对于美元,如果指定的区域设置是美国,则符号为"$",而对于其他区域设置可能为"US$"。如果无法确定符号,则返回ISO 4217货币代码。

      如果指定的locale包含"rg"(区域覆盖)Unicode扩展,则从此方法返回的符号反映了使用该扩展指定的值。

      参数:
      locale - 需要为此货币显示名称的区域设置
      返回:
      指定区域设置下此货币的符号
      抛出:
      NullPointerException - 如果locale为null
    • getDefaultFractionDigits

      public int getDefaultFractionDigits()
      获取与此货币一起使用的默认小数位数。请注意,小数位数与货币的ISO 4217的小数单位相同。例如,欧元的默认小数位数为2,而日元为0。对于伪货币,例如IMF特别提款权,返回-1。
      返回:
      与此货币一起使用的默认小数位数
    • getNumericCode

      public int getNumericCode()
      返回此货币的ISO 4217数字代码。
      返回:
      此货币的ISO 4217数字代码
      自从:
      1.7
    • getNumericCodeAsString

      public String getNumericCodeAsString()
      String形式返回此货币的3位ISO 4217数字代码。与getNumericCode()返回的数字代码为int不同,此方法始终以3位字符串返回数字代码。例如,数字值32将返回为"032",数字值6将返回为"006"。
      返回:
      此货币的3位ISO 4217数字代码,作为String
      自从:
      9
    • getDisplayName

      public String getDisplayName()
      获取适合在默认DISPLAY区域设置下显示此货币的名称。如果找不到适合默认区域设置的显示名称,则返回ISO 4217货币代码。

      这相当于调用getDisplayName(Locale.getDefault(Locale.Category.DISPLAY))

      返回:
      默认DISPLAY区域设置下此货币的显示名称
      自版本:
      1.7
    • getDisplayName

      public String getDisplayName(Locale locale)
      获取适合在指定区域设置下显示此货币的名称。如果在指定区域设置下找不到合适的显示名称,则返回ISO 4217货币代码。
      参数:
      locale - 需要为此货币获取显示名称的区域设置
      返回:
      指定区域设置下此货币的显示名称
      抛出:
      NullPointerException - 如果locale为null
      自版本:
      1.7
    • toString

      public String toString()
      返回此货币的ISO 4217货币代码。
      覆盖:
      toString 在类 Object
      返回:
      此货币的ISO 4217货币代码