charat用于按索引读取单个字符(只读),tochararray将字符串转为可修改的字符数组;前者遍历适合统计判断,后者支持原地修改。

Java 中 charAt 和 toCharArray 是处理字符串字符的两个基础方法,用途不同但常配合使用:前者用于**按索引快速读取单个字符**,后者用于**把整个字符串转成可修改的字符数组**。
用 charAt 逐个访问字符(只读)
charAt(int index) 返回指定位置的 char,索引从 0 开始。越界会抛 StringIndexOutOfBoundsException,使用前建议校验长度。
常见写法:
- 遍历字符串每个字符(适合只读场景,如统计、判断)
- 配合
length()使用,避免越界 - 不能用来修改原字符串(String 不可变)
示例:
String s = "hello"; for (int i = 0; i
用 toCharArray 转为可操作的字符数组
toCharArray() 返回一个新分配的 char[],内容与原字符串一致。数组可读可写,适合需要**修改字符内容**的场景(比如大小写翻转、替换、加密预处理等)。
注意点:
- 返回的是副本,修改数组不影响原字符串
- 若后续还需字符串,记得用
new String(char[])或String.valueOf()转回 - 比反复调用
charAt更高效(尤其需多次访问或修改时)
示例(将小写字母转大写):
String s = "Hello123"; char[] chars = s.toCharArray(); for (int i = 0; i = 'a' && chars[i]
什么时候选哪个?关键看需求
简单判断或只读遍历 → 用 charAt,代码简洁、内存开销小;
需要修改字符、频繁随机访问、或做批量处理 → 用 toCharArray,更灵活高效。
不推荐混用:比如在循环里反复调用 toCharArray 生成新数组,会造成不必要的对象创建。
补充:替代方案与注意事项
Java 8+ 可用 chars() 或 codePoints() 流式处理(支持 Unicode 补充字符),但对普通 ASCII 场景略重;
charAt 返回的是 char(16 位),无法正确表示某些 emoji(如 ? 是代理对),此时应优先考虑 codePointAt 等方法;
字符串为空时,charAt(0) 直接报错,toCharArray() 返回空数组(安全,长度为 0)。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











