public class Test {
public static void main(String[] args) {
int a[][];
a = new int[0][0];
for(int i=0;i<a.length;i++){
for(int j=0;j<a[i].length;j++){
System.out.println(a.length);
System.out.println(a[j].length);
}
}//循环的时候不抛异常
System.out.println(a.length);//打出结果为0
System.out.println(a[a.length].length);//抛越界异常 }}
这是刚看到另外一个帖子后看了下CORA JAVA,说是JAVA中支持长度为0的数组,做的小实验
想问下0长度数组在内存里是个什么样子
另请大家解释下这个程序,既然最后一句抛异常,前面循环中为什么不抛?
解决方案 »
- 求助 Ant如何同时编译两个互相引用源文件夹?
- 如何用javac编译一个文件夹下的所有*.java文件呢?
- 请教高手们 这段程序为什么会是-1的结果
- 在APPLET中用JFreeChart,那个包巨大,几乎1M,我用的功能很少,有没有什么工具可以找出我不需要用到的class??
- 写了一个类似于"WINDOWS计算器"的代码---有须要的可以看一下
- 程序运行正常,可是一打包就不能运行
- Think in Java 大讨论一 ( 关于 Inner class )
- 怎么知道一个文件有多少行?
- NEWER 问一把发晕的初级题。(送分题)
- Java工程设置运行时启动的类
- 生成内部类的语法是这样吗???
- 我定义了一个抽象类,模板函数,在子类中实现模板函数,为什么没有响应?
int[] a = new int[0];
int[][] b = new int[0][0];
}
}javap -c Main Compiled from "Main.java"
public class Main extends java.lang.Object{
public Main();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object."<init>":()V
4: returnpublic static void main(java.lang.String[]);
Code:
0: iconst_0
1: newarray int
3: astore_1
4: iconst_0
5: iconst_0
6: multianewarray #2, 2; //class "[[I"
10: astore_2
11: return}没什么特别的地方,创建数组,不过用的参数是0而已. for(int i=0;i<a.length;i++){
因为a.length是0,所以根本不会执行循环里面的代码,所以不可能抛出异常了.
那就多问个问题吧,那次想看JDK中的原代码,不知道该去哪看
两种方法:
在库里面直接打开rt.jar,选择你要看的类就能直接打开代码.
或者选中你要看的类,按ctrl,点鼠标进入.
如果找不到代码,自己配一下src.zip的位置.