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)