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