这个问题很简单,因为Object[] 里面放的是Object对象以及它的子类,什么意思呢?就是所有的对象了,因为所有的对象都是Object的子类,所以Object数组里面可以放Object数组
而String[]里面可以放String对象和String对象所有的子类,但是String对象是没有子类的,所以只能放String对象,而不能放String[]数组。大概就这样了
而String[]里面可以放String对象和String对象所有的子类,但是String对象是没有子类的,所以只能放String对象,而不能放String[]数组。大概就这样了
Object[] b = new Object[3];
b[1] = new Object[3];
凡是被new出来都是对象。
所以Object(父类)可以指向任何被new出来的对象(子类)。
String[] s = new String[3];
s[1] = new String[3];
s是一个String类型的数组,所以s[1]是一个String类型的元素。
new String[3]是一个数组。String类型的元素(s[1]),不能指向数组。
刚才去查了文档,确认了Object的确是数组类型的父类:
Class Object is the root of the class hierarchy. Every class has Object as a superclass. All objects, including arrays, implement the methods of this class
java把数组也作为一个继承的类型,这点确实有点不同于其他语言。
再次感谢大家的回答,学习了!