我正在用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
对于 boolean 值,B
对于字节,S
简而言之,C
对于字符,F
对于 float ,D
对于双和 J
很长一段时间。 J
是 I
之后的字母。内置类以 L
开头并以 ;
结尾我很想制作 L
长期和J
对于 Java 类,但这只是我的问题;)
你不能这样做
(int [ ]) o1;
因为o1
实际上是一个int[][]
不是int[]
并且您不能在不兼容的类型之间进行转换。
关于java - 为什么这段代码显示异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32128692/