1. 方法简介
toUpperCase()
是 Java String 类的核心方法之一,用于将字符串中的所有字符转换为大写形式。⚠️ 需要注意的是,当不显式指定 Locale
时,该方法会使用 JVM 的默认语言环境。这在跨系统部署时可能引发意想不到的坑——比如在土耳其语系统中,小写字母 'i' 会被错误转换。最佳实践是始终显式指定 Locale。
2. 方法签名
该方法提供两种重载形式,覆盖不同使用场景:
public String toUpperCase() // 使用默认 Locale
public String toUpperCase(Locale locale) // 指定特定 Locale
✅ 推荐使用带 Locale 参数的版本,避免跨平台兼容性问题。
3. 示例代码
以下测试用例展示了基本用法(注意:示例中未指定 Locale,实际生产代码应避免这种写法):
@Test
public void whenConvertToUpperCase_thenCorrect() {
String s = "Welcome to Baeldung!";
assertEquals("WELCOME TO BAELDUNG!", s.toUpperCase());
}
4. 关键注意事项
使用 toUpperCase()
时需警惕以下陷阱:
Locale 敏感性
❌ 在土耳其语系统中:"i".toUpperCase()
返回"\u0130"
(带点大写 I)而非"I"
✅ 正确姿势:"i".toUpperCase(Locale.ENGLISH)
强制使用英语规则性能考量
- 每次调用都会生成新 String 对象(不可变性原则)
- 高频操作场景建议复用结果
特殊字符处理
- 德语
ß
转大写会变成"SS"
(需指定Locale.GERMAN
) - 部分符号(如
©
)不受影响
- 德语
💡 经验之谈:涉及国际化文本处理时,永远不要依赖系统默认 Locale。哪怕只是处理英文,也建议显式传入
Locale.ROOT
或Locale.ENGLISH
。