Java中String大小写转换主要用toUpperCase()和toLowerCase()方法,返回新字符串且原串不变,默认按系统Locale处理,数字符号中文等不受影响;需注意Locale特例、部分转换需手动处理,以及性能与比较方式。

Java 中 String 字符串的大小写转换主要靠 String 自带的两个方法:toUpperCase() 和 toLowerCase(),它们能快速、安全地完成整串字母的大小写转换。
使用 toUpperCase() 和 toLowerCase() 方法
这两个方法返回新字符串,原字符串不变(因为 String 是不可变的)。默认按当前系统 Locale 转换,一般能满足多数场景:
-
"Hello World".toUpperCase()→"HELLO WORLD" -
"Java123!".toLowerCase()→"java123!"
注意:数字、符号、空格和非 ASCII 字符(如中文)不受影响,只处理符合 Unicode 大小写规则的字母。
指定 Locale 避免语言特例问题
某些语言存在特殊大小写规则,比如土耳其语的 “i” 和 “I” 不是简单镜像。不指定 Locale 可能在多语言环境下出错:
立即学习“Java免费学习笔记(深入)”;
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 推荐写法:
"İstanbul".toLowerCase(Locale.ENGLISH)(避免土耳其语 locale 下异常) - 更稳妥做法:显式传入
Locale.ROOT或Locale.US,确保行为稳定
单字符或部分字符转换需手动处理
如果只要转换某几个字符(比如首字母大写、驼峰转下划线),不能直接用上面两个方法,得结合 StringBuilder 或流式操作:
- 首字母大写:
str.isEmpty() ? "" : str.substring(0, 1).toUpperCase() + str.substring(1).toLowerCase() - 逐字符判断转换:
str.chars().mapToObj(c -> Character.isLowerCase(c) ? Character.toUpperCase(c) : c).collect(StringBuilder::new, (sb, c) -> sb.append(c), StringBuilder::append).toString()
这种场景建议封装成工具方法,避免重复逻辑。
性能与注意事项
对普通应用,toUpperCase() 和 toLowerCase() 性能足够好;但高频调用或超长字符串时要注意:
- 每次调用都创建新对象,避免在循环中反复调用同一字符串的大小写方法
- 若只是校验是否全大写/小写,可用
str.equals(str.toUpperCase()),但更高效的是遍历检查字符 - 不要用
==比较结果,始终用equals()
不复杂但容易忽略细节。

















