Object []数组可以容纳什么?

Dor*_*ore 6 java arrays

我是Java编程语言的新手,对数组有疑问.String[]数组包含字符串.Array[]数组包含其他数组.Object[]阵列怎么样?显然,这些将持有Object.但是,既然Object是Java中所有东西的超类,这是否意味着Object[]数组可以容纳ObjectJava中的所有类型?换句话说,数组是否可以保存作为创建数组的对象的子类的对象?一个可以Number[]阵列持有的整数?

Dav*_*Yee 10

是的但是你可以通过一个小程序自己尝试来学到很多东西:

public class Example {
    public static void main(String[] args) {
        String string = "String";
        Integer integer = new Integer(1);
        int integerPrimitive = 2;
        Float floatBoxed = new Float(1.23);
        float floatPrimitive = 1.23f;

        // Can hold different types inheriting from Object
        Object[] objects = new Object[] { 
                string, 
                integer, 
                integerPrimitive,
                floatBoxed, 
                floatPrimitive };

        // Can hold anything that inherits from Number; cannot hold a String
        Number[] numbers = new Number[] { 
                integer, 
                integerPrimitive, 
                floatBoxed,
                floatPrimitive };

        for (int i = 0; i < objects.length; i++) {
            System.out.println("objects[" + i + "] = " + objects[i]);
        }

        for (int i = 0; i < numbers.length; i++) {
            System.out.println("numbers[" + i + "] = " + numbers[i]);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

objects[0] = String
objects[1] = 1
objects[2] = 2
objects[3] = 1.23
objects[4] = 1.23
numbers[0] = 1
numbers[1] = 2
numbers[2] = 1.23
numbers[3] = 1.23
Run Code Online (Sandbox Code Playgroud)

知道数组容器可以容纳的关键是首先观察对象类型是否相同,或者对象是否是数组容器类型的子类.

在你的问题中,如果a Number可以持有Integer,你应该看到Integer它继承的Javadocs的继承Number.您还可以看到Number继承自Object.

班级编号

类整数

  • 谢谢。这是一个很好的解释。令我惊讶的是,您可以将任何不同类型的数据放入 Object[] 数组中。我认为这就是 Java 所反对的一切。 (2认同)