Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么要显示此代码?_Java_Exception_Casting - Fatal编程技术网

Java 为什么要显示此代码?

Java 为什么要显示此代码?,java,exception,casting,Java,Exception,Casting,我正在用Java学习算法,我不明白为什么在第7行显示错误 class Test { public static void main(String [ ] args) { int [ ] [ ] a = { {1,2}, {3,4} }; int [ ] b = (int [ ]) a[1]; Object o1 = a; int [ ] [ ] a2 = (int [ ] [ ]) o1; int [ ] b

我正在用Java学习算法,我不明白为什么在第7行显示错误

class Test {
    public static void main(String [ ] args) {
        int [ ] [ ] a = { {1,2}, {3,4} };
        int [ ] b = (int [ ]) a[1];
        Object o1 = a;
        int [ ] [ ] a2 = (int [ ] [ ]) o1;
        int [ ] b2 = (int [ ]) o1;
        System.out.println(b[1]);
    }
}
我假设你有一个“ClassCastException无法从[[I]转换为[I”。当你遇到错误时,你应该假设它很重要,如果你不知道它意味着什么,你通常可以用谷歌搜索它

这里神秘的部分是,JVM在内部调用
int[]
作为
[I
int[][]
[[I
调用
[
开头表示它是一个数组,
I
int
的缩写,还有
Z
表示布尔值,
B
表示字节,
S
简称,
C
表示字符,
F
表示浮点值,
D
表示双精度,
J
表示长。
J
I后面的字母ode>。内置类以
L
开始,以
结束;
我会很长时间尝试使用
L
,对于Java类则是
J
,但这只是我;)

你不能这么做

(int [ ]) o1;

因为
o1
实际上是一个
int[][
而不是一个
int[]
并且你不能在不兼容的类型之间进行强制转换。

第7行是什么?错误是什么?第7行是“int[]b2=(int[])o1;”并且在线程“main”java.lang.ClassCastException:[[I不能在Test.main(Test.java:7)处强制转换到[I]我建议你在问题中加上这个。当有人说“不起作用”时,你知道有人会问“什么不起作用”,当有人说“一个错误”时,有人会问“什么错误?”;)谢谢,@Peter Lawrey。我对类型对象感到困惑。@filran这种类型的强制转换在其他语言(如C)中也可以工作,但是Java在运行时检查类型,不允许这样做。