2 回答

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超9個(gè)贊
讓我們一步一步來(lái):
Object
是Java中所有引用類型的根源。凡是有參考價(jià)值的東西,也是instanceof Object
!“顯然”,
a[0] = "asd";
分配一個(gè)String。字符串默認(rèn)是對(duì)象。最后,?
a[1] = 1;
導(dǎo)致自動(dòng)裝箱。您正在將一個(gè)Integer對(duì)象分配給該數(shù)組槽,而不是原始int 值 1。
當(dāng)然,這里還值得一提的是協(xié)方差。

TA貢獻(xiàn)1839條經(jīng)驗(yàn) 獲得超15個(gè)贊
想象一下,你有一個(gè)類動(dòng)物
class Animal {
...
}
以及擴(kuò)展動(dòng)物類的其他類,例如狗類和貓類:
class Dog extends Animal {
...
}
class Cat extends Animal {
...
}
在容器(數(shù)組、列表...)中,您現(xiàn)在想要存儲(chǔ)不同的對(duì)象。以下幾點(diǎn)可能是顯而易見的:
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");
不可能的是將狗存儲(chǔ)在貓數(shù)組中,反之亦然。所以以下不起作用:
cats[1] = new Dog("Tommy"); or dogs[1] = new Cat("Tammy");
但是,如果您想在數(shù)組中包含不同的動(dòng)物,則該數(shù)組必須是要存儲(chǔ)在其中的所有動(dòng)物的超類類型
Animal[] pets = new Animal[3];
pets[0] = new Dog("Bobby");
pets[1] = new Cat("Cathy");
pets[2] = new Fish("Nemo");
正如評(píng)論和上面的答案中已經(jīng)提到的,Object是java中所有類的超級(jí)類。即使您編寫自己的類,它也會(huì)擴(kuò)展對(duì)象類。
下面的東西是等價(jià)的:
class MyOwnClass { ... }
class MyOwnClass extends Object { ... }
這意味著即使沒(méi)有明確說(shuō)明,每個(gè)類都會(huì)擴(kuò)展對(duì)象類。因此,如果 object 是所有其他類的超類,您可以在類型為 object 的數(shù)組中執(zhí)行與對(duì) animal 數(shù)組所做的相同的操作。也就是說(shuō),里面存放不同的動(dòng)物種類。因此(因?yàn)樗蓄惗祭^承自該對(duì)象),以下適用,即使它沒(méi)有多大意義
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");
添加回答
舉報(bào)