有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Object[]到底是什么?

我很难理解Object[]是什么。它是一个保存对象的数组吗?例如,当我们这样做时会发生什么:

int a = 5;
String b = "Hi";
Object[] c = { a, b };

我是否刚刚创建了一个添加了属性ab的对象?或者我得到了一个Object数组,其中ab被算作对象和这个c对象数组的元素

谢谢


共 (6) 个答案

  1. # 1 楼答案

    Did I just create an object with properties a and b added to it ?

    不,这些都是元素属性!=元素

    did I get an Object Array in which a and b was counted as objects and elements of this c the object array ?

    没什么错。计算为元素,即对象

      Object[] c = { a, b }; // a is Integer and b is String
    

    写上一行时,这意味着您创建了一个数组对象,其中包含元素ab。你可以用c引用数组

  2. # 2 楼答案

    Is it an Array that keeps Objects ?

    准确地说,它是一个包含对其他对象的引用的对象

    Java中的所有对象都会被创建并存在于堆中,直到垃圾收集器回收它们。引用指向这些内存位置,并为程序提供访问权限

    您给出的示例使用了两个不可变的对象。如果你选择一个可变的对象并将其添加到数组中,真正的乐趣就会发生

  3. # 3 楼答案

    这是一组物体。您已经将a从一个基本int自动装箱为一个整数,并将其添加到对象数组中。请记住,所有对象都会扩展对象。尝试将对象强制转换为它们的子类类型,这可能会帮助您了解发生了什么。例如

    int a2 = (Integer) c[0];
    String b2 = (String) c[1];
    
  4. # 4 楼答案

    实际上,您创建了一个从Object派生的对象数组(对于Java中的所有对象都是如此),现在在位置0上包含一个整数(通过自动装箱创建),在位置1上包含一个字符串

  5. # 5 楼答案

    Java不是动态类型的,因此不能像javascript(without reflection)那样动态添加属性。顺便说一句,在java中,你不称它们为属性,而是称它们为实例成员/字段或方法,如果它是一个函数,则在classes中定义(但你通常使用由类构造的实例)。所以Object是一个类Object obj = new Object();obj是一个实例

    符号ClassName[]总是表示类型为ClassName的数组,所以

    Object[]
    

    用符号表示一组对象。及

    String[]
    

    只能包含字符串的数组

    可以使用

    Object[] objArr = new Object[3];
    

    它创建了一个新的空数组,可以容纳3个元素。或者,您可以通过以下方式直接设置元素:

    Object[] objArr = {"elem1","elem2","elem3"};
    

    它创建了一个包含3个元素的数组(elem1-3)。因此:

    System.out.println(objArr[0]); //"elem1"
    System.out.println(objArr[1]); //"elem2"
    System.out.println(objArr[2]); //"elem3"
    System.out.println(objArr[3]); // ArrayIndexOutOfBoundsException
    

    因为使用了Object作为类型,所以实际上可以对数组设置任何内容,因为任何类都会自动从^{}继承

    Object[] objArr = {"elem1",2.34,new Date()};
    System.out.println(objArr[0]); //"elem1"
    System.out.println(objArr[1]); //2.34
    System.out.println(objArr[2]); //11.05.2014
    

    2.34是一个double,所以是一个原语,但由于1.4Java autoboxes every primitive into its Object pendant(所以^{}),这就是它工作的原因。注意,通常在静态类型语言中,你不想这样做,因为你失去了静态类型检查的所有优点,所以最好定义你的类型并使用它们

  6. # 6 楼答案

    在执行它将打印的程序时

    5
    Hi

    对数组进行迭代。这表明Object数组由a of Integerb of String组成