模块 java.base
 java.util

类 Currency

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

public final class Currency extends Object implements Serializable
代表一种货币。货币由其 ISO 4217 货币代码标识。访问 国际标准化组织网站 了解更多信息。

该类的设计使得任何给定货币的 Currency 实例都不会超过一个。因此,没有公共构造函数。您使用 getInstance 方法获得一个 Currency 实例。

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

#Sample currency properties
JP=JPZ,999,0

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

#Sample currency properties with cutover date
JP=JPZ,999,0,2014-01-01T00:00:00

如果 Currency 类在格林威治标准时间 2014 年 1 月 1 日 00:00:00 之后加载,将取代日本的货币数据。

如果遇到语法格式错误的条目,则忽略该条目并处理文件中的其余条目。对于存在重复国家代码条目的实例,Currency 的货币信息的行为是未定义的,文件中的其余条目将被处理。

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

建议在处理 Currency 或货币值时使用 BigDecimal 类,因为它可以更好地处理浮点数及其运算。

自从:
1.4
参见:
  • 方法详情

    • getInstance

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

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

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

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

      参数:
      locale - 其国家/地区需要 Currency 实例的locale
      返回:
      给定区域设置的国家/地区的 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 locale 包含“rg”(区域覆盖) Unicode 扩展 ,则从此方法返回的符号反映使用该扩展名指定的值。

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

      返回:
      默认 DISPLAY locale的此货币符号
    • getSymbol

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

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

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

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

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

      public String  getNumericCodeAsString()
      返回此货币的 3 位 ISO 4217 数字代码作为 String 。与 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)
      获取适合在指定区域显示此货币的名称。如果没有为指定的locale找到合适的显示名称,则返回 ISO 4217 货币代码。
      参数:
      locale - 需要此货币的显示名称的locale
      返回:
      此货币在指定locale中的显示名称
      抛出:
      NullPointerException - 如果 locale 为空
      自从:
      1.7
    • toString

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