charat()返回空字符串,中括号返回undefined;charat会转索引为整数,中括号直接作属性名;两者均不支持负索引,负索引应使用at()。

charAt() 和 中括号访问(str[index]) 都能获取字符串指定位置的字符,但底层行为和边界处理有关键差异。
基本用法一致,索引都从 0 开始
两者都按数字索引定位字符,首字符位置是 0,末字符位置是 str.length - 1:
-
'hello'.charAt(1)→'e' -
'hello'[1]→'e'
对非数字索引的处理方式不同
charAt() 会尝试把传入的参数转成整数;中括号则直接当属性名使用,不转换:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
-
'abc'.charAt('2')→'c'(字符串'2'被转为数字 2) -
'abc'['2']→'c'(巧合成立,因为属性名碰巧是数字字符串) -
'abc'.charAt('x')→''('x'转整数为NaN,再转为 0) -
'abc'['x']→undefined(字符串'x'是无效属性名)
越界访问返回值不同
这是最实用的区别:容错性不一样:
- 索引超出范围时,
charAt(-1)、charAt(100)都返回空字符串'' - 而
str[-1]或str[100]一律返回undefined - 这意味着
charAt()更适合做“安全取字符”场景,比如校验开头/结尾字符而不担心报错
负索引支持情况不同
标准 charAt() 不支持负索引;中括号也不支持(str[-1] 永远是 undefined):
-
'hello'.charAt(-1)→''(不是最后一个字符,而是越界) - 如需负索引,应改用
at()方法:'hello'.at(-1)→'o'(ES2022 新增,现代环境推荐)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










