本教程是为JDK 8编写的。本页面描述的示例和实践不利用后续版本中引入的改进,并可能使用不再可用的技术。
请参阅Java语言更改了解Java SE 9及后续版本中更新的语言功能的摘要。
请参阅JDK发行说明以了解所有JDK版本的新功能、增强功能和已删除或不建议使用的选项。
您可以创建一个具有任何有效语言和国家/地区代码组合的Locale
,但这并不意味着您可以使用它。请记住,Locale
对象只是一个标识符。您将Locale
对象传递给其他对象,然后这些对象才会进行实际工作。我们称这些其他对象为与区域相关的对象,它们并不知道如何处理所有可能的Locale
定义。
要找出一个与区域相关的类支持哪些类型的Locale
定义,您可以调用getAvailableLocales
方法。例如,要找出DateFormat
类支持哪些Locale
定义,可以编写如下的例程:
import java.util.*; import java.text.*; public class Available { static public void main(String[] args) { Locale list[] = DateFormat.getAvailableLocales(); for (Locale aLocale : list) { System.out.println(aLocale.toString()); } } }
请注意,toString
返回的String
包含用下划线分隔的语言和国家/地区代码:
ar_EG be_BY bg_BG ca_ES cs_CZ da_DK de_DE ...
如果您想向最终用户显示Locale
名称列表,您应该显示比toString
返回的语言和国家/地区代码更容易理解的内容。相反,您可以调用Locale.getDisplayName
方法,该方法检索Locale
对象的本地化String
。例如,当在前面的代码中用getDisplayName
替换toString
时,程序打印以下行:
阿拉伯语(埃及) 白俄罗斯语(白俄罗斯) 保加利亚语(保加利亚) 加泰罗尼亚语(西班牙) 捷克语(捷克共和国) 丹麦语(丹麦) 德语(德国) ...
您可能会看到不同的区域列表,这取决于Java平台实现。