【问题标题】:How can an object reference in java hold the reference to a primitive double dimensional int arrayjava中的对象引用如何保存对原始二维int数组的引用
【发布时间】:2021-11-23 06:08:01
【问题描述】:

我有一段代码-

public class Sudoku {
    static int[][] game;

    public static void main(String[] args) {
        int [][] games= new int[3][3];
        Object obj =games;
    }

}

我的问题是如何将“游戏”引用变量分配给“对象”类型的引用变量?我认为“ClassCastException”会在运行时抛出。但是代码编译并运行良好。 由于两个原因,引用变量“games”是否不兼容分配给对象引用 - 1)“games”是对二维int数组的引用,而“obj”是对Object的引用。 2)int 显然是一个原始变量..如何将它分配给对象类型的变量? 我在 Intellij IDE 中运行它。

【问题讨论】:

  • 所有数组都是Object 的实例。任何类型的对象都可以分配给Object 引用。
  • "int 显然是一个原始变量" 是的,但这不是int,而是int[][],它是一个引用类型。但是你可以写Object obj = 0;,因为自动装箱。
  • 换个角度想一想——任何需要new 来创建实例的东西都是Object
  • 明白了,每当使用 new 时,这意味着我正在处理一个对象和“int[][],它是一个引用类型。”多谢你们!如果某些机构计划这样做,我曾提到要提及拒绝投票的原因,但仍然有人在没有提及任何理由的情况下拒绝投票。无论如何感谢@AndyTurner 和 Vasily

标签: java arrays object oop


【解决方案1】:

引用变量“games”是否不兼容分配给对象引用,原因有两个 - 1)“games”是对二维 int 数组的引用,而“obj”是对 Object 的引用。 2)int 显然是一个原始变量

int 是原始类型是正确的。但是,您示例中 games 的类型是 int[][],而不是 int,并且是 Object 的子类。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-25
    • 2021-06-14
    • 2016-03-24
    • 2017-11-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多