我对于java基本类型的理解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我对于java基本类型的理解相关的知识,希望对你有一定的参考价值。

问:为什么基本类型数组不能和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[],我在知道提问了一下。点此进入链接

参考参考

以上是关于我对于java基本类型的理解的主要内容,如果未能解决你的问题,请参考以下文章

Java数据类型

Java技术分享:Java基本数据类型

java基础总结--深入理解基本数据类型

Java基础系列1:深入理解Java数据类型

理解java值传递与引用传递

关于java中值传递还是引用传递