我编写了以下代码来反转给定的String:
String str = "abcdef";
char[] strToChar = str.toCharArray();
char[] outString = new char[strToChar.length];
for(int j = 0; j < strToChar.length; ) {
int len = strToChar.length-j;
outString[j++] = strToChar[strToChar.length-j];
}
根据我的理解,初始化发生在从右到左。因此,此处的
strToChar[strToChar.length-j]
应该抛出ArrayIndexOutOfBoundException
。但是运行良好。这是怎么回事?它不应该对此进行评估吗?
outString[0] = strToChar[6]; //This should throw exception
最佳答案
如果我查看您的代码,则说明您已将条件写为
for(int j = 0; j < strToChar.length;)
在这里,strToChar.length将返回数组的实际长度为6。
使用for循环迭代数组的正确方法是:
for(int j = 0; j < strToChar.length;j++)
索引从0开始到