Java 为什么要显示此代码?
我正在用Java学习算法,我不明白为什么在第7行显示错误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
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在运行时检查类型,不允许这样做。