2 回答

TA貢獻1853條經驗 獲得超9個贊
讓我們一步一步來:
Object
是Java中所有引用類型的根源。凡是有參考價值的東西,也是instanceof Object
!“顯然”,
a[0] = "asd";
分配一個String。字符串默認是對象。最后,?
a[1] = 1;
導致自動裝箱。您正在將一個Integer對象分配給該數組槽,而不是原始int 值 1。
當然,這里還值得一提的是協方差。

TA貢獻1839條經驗 獲得超15個贊
想象一下,你有一個類動物
class Animal {
...
}
以及擴展動物類的其他類,例如狗類和貓類:
class Dog extends Animal {
...
}
class Cat extends Animal {
...
}
在容器(數組、列表...)中,您現在想要存儲不同的對象。以下幾點可能是顯而易見的:
Dog[] dogs = new Dog[2];
dogs[0] = new Dog("Bobby");
dogs[1] = new Dog("Jack");
Cat[] cats = new Cat[2];
cats[0] = new Cat("Cathy");
cats[1] = new Cat("Jenny");
不可能的是將狗存儲在貓數組中,反之亦然。所以以下不起作用:
cats[1] = new Dog("Tommy"); or dogs[1] = new Cat("Tammy");
但是,如果您想在數組中包含不同的動物,則該數組必須是要存儲在其中的所有動物的超類類型
Animal[] pets = new Animal[3];
pets[0] = new Dog("Bobby");
pets[1] = new Cat("Cathy");
pets[2] = new Fish("Nemo");
正如評論和上面的答案中已經提到的,Object是java中所有類的超級類。即使您編寫自己的類,它也會擴展對象類。
下面的東西是等價的:
class MyOwnClass { ... }
class MyOwnClass extends Object { ... }
這意味著即使沒有明確說明,每個類都會擴展對象類。因此,如果 object 是所有其他類的超類,您可以在類型為 object 的數組中執行與對 animal 數組所做的相同的操作。也就是說,里面存放不同的動物種類。因此(因為所有類都繼承自該對象),以下適用,即使它沒有多大意義
Object[] objects = new Object[6];
objects [0] = "Some String";
objects [1] = 42;
objects [2] = Double.NEGATIVE_INFINITY;;
objects [3] = new Dog("Bobby");
objects [4] = new Cat("Cathy");
objects [5] = new File("C:\\temp\\test.txt");
添加回答
舉報