public class DataTypeTrans {
public static void main(String[] args) {
byte b=10;
test(b);
}
//方法重载:参数列表(类型,个数,顺序)
//方法1
public static void test(byte b){
System.out.println("bbbbb");
}
//方法2
public static void test(short s){
System.out.println("sssss");
}
//方法3
public static void test(char c){
System.out.println("ccccc");
}
//方法4
public static void test(int i){
System.out.println("iiiii");
}
}
方法重载时,可根据参数列表(类型,个数,顺序)来判断执行哪个方法!
如上所示,有4个重载的方法:方法1、方法2、方法3、方法4。
运行如上代码,控制台输出的是 bbbbb。
然而:
- 如果把方法1注释掉,此时控制台输出的应该是 sssss。因为byte类型是8位的,int类型是32位的,而short类型是16位的。从8位到16位更简单,所以byte类型选择转换为short类型,就会调用方法2执行。
- 当注释掉方法1和方法2,即使char类型是16位的,byte类型也不会选择去转换为char类型。根本原因是char类型不能表示负数(并不是因为char表示的是字符)
- 当注释掉方法1、方法2和方法4时,主方法中的test(b);语句会报错。因为没有可调用的方法。
- 综上:方法3有没有都无所谓,不起作用。因为byte类型不会转换为char类型,即使其他方法全部注释掉,也不会来调用这个方法。