日期:2014-05-20  浏览次数:20638 次

java 面试题!
public   class   Test  
  {
               
             
     
       
        private   void   print(Integer   some)
        {
        System.out.println( "Integer ");
        }
       
        private   void   print(Object   some)
        {
        System.out.println( "Object ");
        }
       
        public   static   void   main(String[]   args)  
        {
               
               
                Test   test   =   new   Test();
                test.print(null);
        }
       
       
}


请说出输出结果.为什么!!!

------解决方案--------------------
Integer
------解决方案--------------------
System.out.println((null+ " ").length());
它等于4
可见它是个4字节的,这可能要研究他的存储方式了
---------
这个不就是 "null "有4个字符吗,怎么扯到字节、存储方式上去了
还有,跟c中的0是两码事,这里都是对象
------解决方案--------------------
我觉得这里的null既可以满足Integer的要求也可以满足Object的要求,只是Integer是更具体的类就先满足他了大家可以试试这个看返回什么
public class test
{
private void print(Object some)
{
System.out.println( "Object ");
}
private void print(int some)
{
System.out.println( "Integer ");
}
public static void main(String[] args)
{
test test1 = new test();
test1.print(null);
}
}
------解决方案--------------------
重载方法的匹配问题
Integer 作为int的封装类,其初始值是null,而不是0.所以,这里你输入参数null,jvm就会调用与参数匹配间隙最小的方法.所以......
------解决方案--------------------
潜力...关注先
------解决方案--------------------
这个到底是为什么我也说不清除。有高手在么?高手讲讲
------解决方案--------------------
经实际验证
Integer

------解决方案--------------------
为什么是Integer而不是Object尼,null 是个到底算什么了,高手来诉!!
------解决方案--------------------
因为匹配都是从子类开始匹配的,所以会匹配到Integer
------解决方案--------------------
把private void print(int some)
{
System.out.println( "Integer ");
}这个方法去掉,就是Object了,真晕/
------解决方案--------------------
Integer 是 Object 的派生类
------解决方案--------------------
...... Integer 是对象啊 null是空对象 他符合第一个print方法的参数类型 当然走第一个方法

所以结果就是Integer啊
------解决方案--------------------