StringBuffer - 字符串索引超出范围

Ben*_*ock -1 java

以下代码应该像hans-> snah一样反转String

StringBuffer hilfsbuffer = new StringBuffer(1);

for (int i = 0; i < buffer.length()/2; i++) {
  hilfsbuffer.setCharAt(0, buffer.charAt(i)); //Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 0
  buffer.setCharAt(i, buffer.charAt(buffer.length()-1-i));
  buffer.setCharAt(buffer.length()-1-i, hilfsbuffer.charAt(0)); //Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 0
}
Run Code Online (Sandbox Code Playgroud)

在评论中,您可以看到错误.

如有需要,请询问更多详情.

Den*_*eng 5

问题是当你创建StringBuffer这样的时候:

StringBuffer hilfsbuffer = new StringBuffer(1);
Run Code Online (Sandbox Code Playgroud)

缓冲区本身有容量1,但底层String仍然是空的.因此,当你尝试这样的事情时:

hilfsbuffer.setCharAt(0, buffer.charAt(i));
Run Code Online (Sandbox Code Playgroud)

0超出范围,你得到你的StringIndexOutOfBoundsException.

来自文档:

StringBuffer(int capacity)

构造一个字符串缓冲区,其中没有字符和指定的初始容量.