java的数组问题,奇怪了

来源:百度知道 编辑:UC知道 时间:2024/06/04 09:27:58
我今天写了2个代码
int[] a=new int[100];
for (int b=-1;b>-101;b--)
{
a[-b]= b;
System.out.println(a[-b]);
}
运行后 javac编译没问题,但运行后运行到-99的时候就出现错误。

然后我改了一下数字
int[] a=new int[102];
for (int b=-1;b>-102;b--)
{
a[-b]= b;
System.out.println(a[-b]);
}

结果运行出了-1到-101

真奇怪了,我设置了数组为102组,但b从-1到-101一共只有101组啊

高手说说这是怎么了

int[] a=new int[100];
for (int b=-1;b>-101;b--)
{
a[-b]= b;
System.out.println(a[-b]);
}
这里的问题在于下标,数组a[]的下标应该是从0~99,所以b只能运行到-99,再往下数组下标就越界了。

int[] a=new int[102];
for (int b=-1;b>-102;b--)
{
a[-b]= b;
System.out.println(a[-b]);
}
这里你所说的问题原因和上面一样,倒不是只有101组,而是a[0]被你抛弃了,没有使用。a[0]~a[101]一共是102组数据。

数组下标不是从1到上界,而是0到上界-1
100的数组范围是0-99