java - 为什么这段代码显示异常?

标签 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 [ ] b2 = (int [ ]) o1;
        System.out.println(b[1]);
    }
}

最佳答案

我假设你有一个“ClassCastException无法从[[I转换为[I””。当您收到错误时,您应该假设它很重要,如果您不知道它意味着什么,您通常可以通过谷歌搜索它。

这里的神秘部分是,JVM 在内部调用 int[][Iint[][][[I [开头表示它是一个数组,Iint 的缩写,还有Z对于 boolean 值,B对于字节,S简而言之,C对于字符,F对于 float ,D对于双和 J很长一段时间。 JI 之后的字母。内置类以 L 开头并以 ; 结尾我很想制作 L长期和J对于 Java 类,但这只是我的问题;)

你不能这样做

(int [ ]) o1;

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

关于java - 为什么这段代码显示异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32128692/

相关文章:

ios - 我可以在 "for in"控制结构中使用 Swift 向下转换吗?

java - 我的高度函数会破坏我的 O(log N) AVL 树插入和删除吗?高度如何实现?

java - 如何在过滤器方法中使用 ContainerRequestContext 获取 REST api 的有效负载

java - 我在执行解密时遇到基数超出范围异常

java - 如果发生异常,使用 newBufferedReader 打开的文件是否会关闭?

java - java中的异常是什么?

java - Android 日历事件的 BroadcastReceiver (2018)

java - 用于比较来自 2 个不同数组的点的最近对算法

python - Pandas 将列类型从列表转换为 np.array

GWT 的 java.lang.IllegalCastException