标签:
问:为什么基本类型数组不能和Object数组对传呢?
答:那是因为基本类型数组虽然被看作成一个引用类型,但是基本类型数组里的每个元素还是基本类型,但是java并没有提供对基本类型的操作的方法
所以不能转为Object数组类型,同理把对应的基本类型数组转为对应包装类数组即可在方法中使用Object数组传递参数
问:为什么基本类型传递给Object参数却可以呢?
答:java有种名为自动包装的机制,在传递给Object行参时,会把该基本类型通过包装机制成为一个新的类。
在java中每一个基本类型都对应着相应的包装类,例子:char:Character int:Integer....
问:通过以上两个问题,又有疑问了,那么为什么不把基本类型的数组自动包装为相应包装类在传递给Object数组呢?
答:因为char[]已经是引用类型了,引用类型还要怎么包装呢?在java中只有基本类型才能被包装为对应的包装类型(引用类型)
问:那么为什么基本类型数组实例可以传递对Object对象的应用呢?
答:我觉得那是因为(按C语言)他把数组中第一个元素的地址传递给了Object参数,因为对于非基本类型(基本类型)java中通常传递的都是该对象的 引用 即可以看成为地址;
问:既然把第一个基本类型元素的地址传递给了Object对象引用,那么为什么不输出基本类型的第一个值呢?
答:如果你把“char[].class == class [C” 看成是Object的一个派生类那么,就可以理解为什么可以通过一个Object形参来接收一个class [C(char[]的真实类型)类行了
即Object可以接收这个类型的信息不过仅限Object所知的信息,即 class [C 基于Object的信息。理所当然的输出一个 o (char[]转型为Object)会输出char[]的地址代码(假设那是)。
我在对于基本类型数组为什么不能转换为Object[],我在知道提问了一下。点此进入链接
参考参考
标签:
原文地址:http://www.cnblogs.com/tianweijiang/p/5572894.html