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)