【问题标题】:Is int[] an object? [duplicate]int[] 是一个对象吗? [复制]
【发布时间】:2013-05-13 17:32:47
【问题描述】:

看了一下,我似乎找不到与此相同的问题。我的问题是关于 Java 中的int[]

创建int[] 时,使用以下语法:

int[] x = new int[5];

int[] 中的方法也让我认为它是Object,但它不遵循 Java 类的命名约定,这让我感到困惑。它也是一个基元类型的数组,可以像基元一样使用。

int[](或我猜的任何原始数组)是对象还是原始数组?

【问题讨论】:

  • 那么就解决了。快关门了!
  • System.out.println(x instanceof Object);true =)
  • 也是一个基元类型的数组,可以像基元一样使用。小心你说的好像你说的数组可以用像一个原始人。

标签: java arrays object


【解决方案1】:

Java 中的数组是Object 的子类,因此它是一个对象类型——即使它包含原始类型。你可以检查一下:

int[] x = new int[5];
if (x instanceof Object)
    System.out.println("It's an Object!");

【讨论】:

    【解决方案2】:

    Java 中的所有数组都被视为对象。你可以看到这个in the Java Language Specification, Ch. 10:

    在 Java 编程语言中,数组是对象(第 4.3.1 节),是动态创建的,并且可以分配给 Object 类型的变量(第 4.3.2 节)。 Object 类的所有方法都可以在数组上调用。

    int[] 类型是 Object 的子类,它具有来自 Object 的所有方法。尽管在语法上它看起来与其他对象类型不同(例如,名称中列出了一个原始类型并且没有类定义),但 Java 语言确实将它们视为对象。

    希望这会有所帮助!

    【讨论】:

      【解决方案3】:

      “数组是一个容器对象,它包含固定数量的单一类型值。”。这就是数组在oracle tutorials中的定义方式。所以不仅原始数组,对象数组也是对象本身。

      【讨论】:

        【解决方案4】:
        int[] x = new int[5];
        
        Object a=(Object)x;
        
        int[] y= (int[])a;
        

        【讨论】:

        • 这没有帮助,只指出用户的要求。它并没有真正回答他们的问题。
        猜你喜欢
        • 2011-05-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-27
        • 2012-07-08
        • 1970-01-01
        • 2011-11-28
        相关资源
        最近更新 更多