如何在Java中实现String.charAt(int i)?

时间:2014-01-02 23:22:40

标签: java string javadoc time-complexity

如果我想使用String.charAt(int i)检查字符串中的每个字符,是否每次从开始计数或自动转换为数组并直接获取charAt索引?

如果我按String.toCharArray()创建一个char数组然后按索引遍历数组会更有效吗?

我可以在JavaDoc中查看这个吗?在哪里?

2 个答案:

答案 0 :(得分:17)

JRE主要是开源的。您可以下载zip文件here或使用grepcode等网站在线浏览。

String.charAt

public char charAt(int index) {
    if ((index < 0) || (index >= value.length)) {
        throw new StringIndexOutOfBoundsException(index);
    }
    return value[index];
}

答案 1 :(得分:0)

  

如果我想使用String.charAt(int i)检查String中的每个字符,   它是从开始算起还是将其转换为数组   自动并直接获取charAt索引?

在内部,String具有一个字符数组value。因此,每次尝试使用i在位置charAt(i)处获取字符时,都会在数组i中的索引value处获得一个值。

  

如果我通过创建一个char数组会更有效   String.toCharArray(),然后按索引遍历数组?

否,因为String.toCharArray()将创建另一个字符数组并将value的内容复制到其中,所以不会。如上所述,使用charAt()获取字符只是按数组中的索引读取值。

  

我可以在JavaDoc中进行检查吗?在哪里?

是的,可以。例如,对于 jdk7 ,您可以检查Stringhere的实现。