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() 时需警惕以下陷阱:

  1. Locale 敏感性
    ❌ 在土耳其语系统中:"i".toUpperCase() 返回 "\u0130"(带点大写 I)而非 "I"
    ✅ 正确姿势:"i".toUpperCase(Locale.ENGLISH) 强制使用英语规则

  2. 性能考量

    • 每次调用都会生成新 String 对象(不可变性原则)
    • 高频操作场景建议复用结果
  3. 特殊字符处理

    • 德语 ß 转大写会变成 "SS"(需指定 Locale.GERMAN
    • 部分符号(如 ©)不受影响

💡 经验之谈:涉及国际化文本处理时,永远不要依赖系统默认 Locale。哪怕只是处理英文,也建议显式传入 Locale.ROOTLocale.ENGLISH