方法名相同时,形参的不同数据类型具体调用顺序:
调用方法名时,遇到整数、小数、等调用顺序解析。
通过具体代码测试得出结果如下:
- 整数调用顺序是先int->long->float->double->Integer
- 小数调用顺序是先double->Double
- 布尔调用顺序是先boolean->Boolean
- 其他都是基本类型->包装类型,可测试一下。
总结:
方法名相同的前提下:
- 传入整数:默认调用int类型,然后调用,参数类型是可以隐式转换为int类型l的ong,float,double类型的方法,最后调用的是,参数类型为int的自动装箱类型:Integer的方法
- 传入小数:默认调用double类型,然后调用,参数类型Double类型的方法
- 传入布尔:默认调用boolean类型,然后调用,参数类型Boolean类型的方法
测试代码:如下
import org.junit.Test;
public class sum {
//byte类型的形参方法
public static void doSum(byte x){
System.out.println("byte");
}
//Byte类型的形参方法
public static void doSum(Byte x){
System.out.println("Byte");
}
//short 类型的形参方法
public static void doSum(short x){
System.out.println("short");
}
//Short 类型的形参方法
public static void doSum(Short x){
System.out.println("Short");
}
//char 类型的形参方法
public static void doSum(char x ){
System.out.println("char");
}
//Character类型的形参方法
public static void doSum(Character x ){
System.out.println("Character");
}
//int 类型的形参方法
public static void doSum(int x){
System.out.println("int");
}
//Integer 类型的形参方法
public static void doSum(Integer x){
System.out.println("Integer");
}
//long 类型的形参方法
public static void doSum(long x){
System.out.println("long");
}
//Long 类型的形参方法
public static void doSum(Long x){
System.out.println("Long");
}
//float 类型的形参方法
public static void doSum(float x){
System.out.println("float");
}
//Float 类型的形参方法
public static void doSum(Float x){
System.out.println("Float");
}
//double 类型的形参方法
public static void doSum(double x){
System.out.println("double");
}
//Double 类型的形参方法
public static void doSum(Double x){
System.out.println("Double");
}
//boolean 类型的形参方法
public static void doSum(boolean b){
System.out.println("boolean");
}
//Boolean 类型的形参方法
public static void doSum(Boolean b){
System.out.println("Boolean");
}
@Test
public void test(){
System.out.println("----------测试区域前------------");
doSum(1);//有int类型时,默认调用带有int类型的方法,其次是long,float,double,Integer。
doSum(1.0);//有double类型时,默认调用带有double类型的方法,其次是float,在其次才是Double。
doSum(ture);//有boolean类型时,默认调用boolean类型的方法,其次是Boolean。
System.out.println("-----------测试区域后-----------");
doSum((byte)1);//要调用byte类型的方法时,必须要强转
doSum(Byte.valueOf((byte)1));//调用Btye
doSum((short)1);//要调用short类型的方法时,必须要强转
doSum(Short.valueOf((short)1));;//调用Short
doSum((char)1);//要调用char类型的方法时,必须要强转
doSum(Character.valueOf((char)1));//调用Character
doSum(1);//喜欢的Int类型,默认调用int。
doSum(Integer.valueOf(1));//调用Interger
doSum(1l);//数值后面直接加个l,可直接调用long类型
doSum(1L);//数值后面直接加个L,直接调用long类型
doSum(Long.valueOf(1l));//调用Long
doSum(Long.valueOf(1L));//调用Long
doSum(1f);//数值后面直接加个f,可直接调用float类型
doSum(1F);//数值后面直接加个F,可直接调用float类型
doSum(Float.valueOf(1f));//调用Float
doSum(Float.valueOf(1F));//调用Float
doSum(1d);//数值后面直接加个d,可直接调用double类型
doSum(1D);//数值后面直接加个D,可直接调用double类型
doSum(Double.valueOf(1d));//调用Double
doSum(Double.valueOf(1D));//调用Double
doSum(1.0);//小数类型默认调用double类型。
doSum(Double.valueOf(1.0));//调用Double
doSum(1.0f);//调用float
doSum(1.0F);//调用float
doSum(Float.valueOf(1.0f));//调用Float
doSum(Float.valueOf(1.0F));//调用Float
doSum(true);//默认调用boolean类型
doSum(Boolean.valueOf(true));//调用Boolean
}
}