读书人

java 面试题!解决方法

发布时间: 2012-01-13 22:43:30 作者: rapoo

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啊
------解决方案--------------------


我觉得 lbfhappy(千里冰封) 说的不错.
[解决办法]
我觉得flybird说的更好
[解决办法]
重载匹配问题
貌似简单
却难到很多人
[解决办法]
up
[解决办法]
在这里,NULL既是Integer的对象,也是Object的对象,而且Integer类继承于Object 类,所以在这种情况下,沿着继承的路线从下往上搜索匹配的情况
[解决办法]
其实fairyskydlj() 已经说得很清楚了
在这里,NULL既是Integer的对象,也是Object的对象,而且Integer类继承于Object 类,所以在这种情况下,沿着继承的路线从下往上搜索匹配的情况——fairyskydlj()
我再给你个例子
class Humen
{

}

class Women extends Humen
{

}
class Man extends Humen
{

}

public class Test
{
private void print(Humen some)
{
System.out.println( "Humen ");
}

private void print(Man some)
{
System.out.println( "Man ");
}
public void print(Women some)
{
System.out.println( "Women ");
}

public static void main(String[] args)
{
Humen hu = new Humen();
Humen hu_shangzhuan = new Man();
Man man = new Man();
Test test = new Test();
test.print(hu);
test.print(hu_shangzhuan);
test.print(man);
test.print(null);
}
}
这段代码在编译期会抱错,说是The method print(Humen) is ambiguous for the type Test
也就是说null既是Man,也是Women的对象。
所以你的结果应该是打印出Integer.
[解决办法]
我觉得还是NULL既是Integer的对象,也是Object的对象,而且Integer类继承于Object 类,所以在这种情况下,沿着继承的路线从下往上搜索匹配的情况.
[解决办法]
因为Integer是Object的子类,所以等于private void print(Integer some)重载了private void print(Object some),所以调用总是先匹配private void print(Integer some),至于null她是任意类型,所以他既可以是Integer又可以是Oject,但因为前面的原因,null按照Integer处理

读书人网 >J2SE开发

热点推荐