黑马程序员技术交流社区

标题: 求解释一段程序的现象,请看下面的程序和输出。。 [打印本页]

作者: an_lucas    时间: 2015-4-17 18:13
标题: 求解释一段程序的现象,请看下面的程序和输出。。
  1. class Demo
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int i=0;
  6.                 p(i);
  7.         }
  8.        
  9.         public static void p(Object o)
  10.         {
  11.                 System.out.println(o);       
  12.         }       
  13. }
复制代码

为什么形参类型为Object可以去接受基本数据类型int?不是说如果实参为对象时形参的类型必须为改对象所属类或者其父类吗?难道说int型变量是对象?
如果int型变量是对象,那我直接调用  i.equoals()  又不行,好矛盾,菜鸟求大神来解释下→_→

QQ截图20150417175439.png (4.55 KB, 下载次数: 3)

QQ截图20150417175439.png

作者: xlunaer    时间: 2015-4-17 18:41
java有自动装箱拆箱操作,所谓装箱,就是把基本数据类型变为对应的引用类型,拆箱则是把引用类型变为基本数据类型,在这里,p()引用i的时候,i自动装箱成Integer()对象使用。相当于p(new Integer(i))
作者: 小葱拌豆腐    时间: 2015-4-17 19:48
在java中object类是一切类的父类
可以为 Object 的变量分配任何引用类型(字符串、数组、类或接口)。Object 变量还可以引用任何值类型(数值、Boolean、Char、Date、结构或枚举)的数据




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2