【发布时间】:2015-07-10 07:52:02
【问题描述】:
我试图用这种方式复制一个单词。我不确定,我是按照正确的方式处理String。
代码是:
public static void main(String args[])
{
String str="Hello";
int i=0;
String copy = "";
while (str.charAt(i) !='\0')
{
copy = copy + str.charAt(i);
i++;
}
System.out.println(copy);
}
运行此代码会产生Exception:
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 5
at java.lang.String.charAt(Unknown Source)
at ReverseWord.main(ReverseWord.java:15)
我是否使用charAt() 并以正确的方式检查null?或者,我对String 处理Java 有错误的概念?
【问题讨论】:
-
你对字符串处理有一个错误的概念。它们不是 0 终止的。
String.length()给你尺寸。 -
另外,以前的字符串拼接方式比较费钱,不知道以后的Java版本有没有改过。
-
为什么要复制一个字符串?试试这个
String str2 = new String(str);。并在此处阅读有关字符串池的信息:stackoverflow.com/questions/2486191/…