主题:数组下标越界检查问题
songfei
[专家分:40] 发布于 2007-11-24 14:20:00
public class Main
{
public static void main(String args[])
{
int a[][];
a=new int[4][];
a[0]=new int[3];
a[1]=new int[5];
a[2]=new int[2];
a[0][0]=1;
a[0][2]=3;
a[33][6]=2;
}
}
Java对数组下标越界是检查的啊
可是这个程序为什么能通过编译????
回复列表 (共5个回复)
沙发
chm51666 [专家分:240] 发布于 2007-11-24 18:27:00
异常是可以通过编译无法运行~~~
板凳
lqwfcje [专家分:660] 发布于 2007-11-24 18:59:00
可以通过编译,运行时才会有异常.一般来说也用数组的length较好.
3 楼
happyboy2007 [专家分:3900] 发布于 2007-11-25 13:33:00
错误分为三种。
第一种是语法错误(不能通过编译)。
第二种是运行时错误,可以编译,但运行时产生异常。
第三种是逻辑错误,可以编译,也可以正常运行,但得不到预期结果。
你所出现的错误是下标越界异常(IndexOutOfBoundsException),它属于运行时异常,只有运行时才会出现。
4 楼
justforfun626 [专家分:18460] 发布于 2007-11-25 16:17:00
IndexOutOfBoundsException is a RuntimeException!
See javadoc here:
[url]http://java.sun.com/j2se/1.4.2/docs/api/java/lang/IndexOutOfBoundsException.html[/url]
[quote]Java对数组下标越界是检查的啊[/quote]
I don't know what do you mean "Java", I assume you are referring Java Compiler.
[size=4]No, there is no [b]compiler[/b] for any programming language on earth 对数组下标越界是检查的啊.
[b]Compiler[/b] neither remember nor check data, only check type and syntax.[/size]
Thanks!
5 楼
zwjiong7 [专家分:0] 发布于 2007-12-01 15:39:00
编译的时候是不会有问题的,因为语法上面没有问题
最后在运行的时候回出现问题
a[33][6]=2;
^
首先,你定义了一个4行X列的数组
但是在后面的赋值语句定义了33行6列的数据单元,
因此会出现溢出出错.
我来回复