public class Demo
{
public static void main(String [] arr)
{
dod(10.0); ①
}
public static void dod(int a) ②
{
System.out.println("a");
}
public static void dod(Integer a)
{
System.out.println("b");
}
}
结果出错。因为 ①的地方10.0是double类型,②是int类型, 高位——>低位 不允许,低位到高位会自动转换
jdk 5.0版本以后,类似Integer和int的包装类和基本数据类型,系统会自动装拆箱,1.4到之前就不会。需要调用方法完成。
public class Demo
{
public static void main(String [] arr)
{
dod(10);
}
public static void dod(double a)
{
System.out.println("a");
}
public static void dod(Integer a)
{
System.out.println("b");
}
}
这里输出的结果还是a ,不论是jdk1.4或者5.0版本以后
原因是jdk向下兼容(因为jdk 1.4调用这个double,所以5.0也是调用double)