Android新Locale(“en_US”)和Locale.US有什么不同?

Android new Locale(“en_US”) and Locale.US are different?

我只是在用常量值测试首选项中的区域设置时遇到了这个问题:

1
(new Locale("en_US")).equals(Locale.US) == false

当查看详细信息时,发现new Locale("en_us")返回的对象的语言代码为"en-us",国家代码为零长度字符串,而Locale.US返回的对象的语言代码为"en",国家代码为"us"。Locale("en","US")返回的结果与locale.us相同,因此很容易避免这个问题,但这是locale构造函数的预期行为吗?


区域设置构造函数按预期工作。您可以这样比较区域设置对象:

(new Locale("en_US")).toString().equalsIgnoreCase((Locale.US).toString())

它会给你预期的价值