我编写了以下代码来反转给定的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开始到
09-27 13:39