java - 需要帮助来理解字符串长度逻辑

标签 java string

我想了解 String length() 函数在反转字符串时的工作原理。 字符串长度为 4 那么为什么我需要在下面的工作代码中给出 length()-1。

下面的代码没有问题,需要帮助来理解 length()

public class MStringReverse {

    String getReverse(String input) {
        System.out.println(input.length());
        String reverse = "";
        for(int i = input.length() - 1; i >= 0; i--) {
            reverse = reverse + input.charAt(i);
        }
        return reverse;
    }

    public static void main(String[] args) {
        MStringReverse mr = new MStringReverse();
        String result = mr.getReverse("Achilis");
        System.out.println(result);
    }
}

最佳答案

因为索引从 0 开始,而不是从 1 开始。因此,如果您有一个长度为 4 的字符串,那么 0,1,2,3 是唯一可能的索引。如果您在 charAt() 中作为参数提供的索引是 小于 0大于或等于 字符串的长度,那么您将得到StringIndexOutOfBoundsException 异常。在这里你可以看到 charAt 方法是如何工作的:

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

关于java - 需要帮助来理解字符串长度逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52079468/

相关文章:

c# - 从长摘要中获取前几个单词(纯字符串或 HTML)

string - 如何将 slice []interface{} 连接到字符串中?

php - 如何从 PHP 中的字符串中删除电子邮件地址和链接?

java - SwingWorker 并从套接字检索数据

java/java存储过程避免每次从文件系统加载证书

java - 编写按类获取/返回任何枚举常量的方法

c# - 将月份添加到输入日期

java - 是否有可以为您的 java/scala 应用程序实现的自动更新程序/修补程序?

java - Activity Jdbc 关联不起作用

c - 我是否需要将\0 添加到传递给函数的字符串文字的末尾?