Java有两个重载,分别用于String.toLowerCase和toUpperCase。其中一个重载将Locale作为参数,而另一个不使用参数并使用默认语言环境(Locale.getDefault()
)。
无参数变体可能无法按预期工作,因为大小写转换遵循国际化,并且默认语言环境取决于系统。最值得注意的是,小写字母i在土耳其语语言环境中被转换为点缀upper的大写字母。
这些方法的目的是什么?无参数变体是否有合法用途?或者它们可能只是一个设计错误? (与默认情况下使用系统默认字符编码的几个I / O API不同。)
答案 0 :(得分:0)
我认为它们只是方便的方法,大部分时间都可以使用,因为真正需要I18n的应用程序可能只是世界上java应用程序世界中的一小部分。
如果你在java程序中对文件名的unix路径进行硬编码并尝试在windows框中运行,你也会得到错误的结果,这不是java的错。
答案 1 :(得分:0)
我想这是一次写一次运行原则的实现。
这是有道理的,因为您可以在JVM启动时提供默认语言环境作为运行时参数之一。
此外,Java运行时为日期和数字提供了许多类似的格式化方法。 (SimpleDateFormat
,NumberFormat
等)
答案 2 :(得分:0)