Java代码:
package com.test.one;
public class One {
public static void go(Long n) {
System.out.println("Long ");
}
public static void go(Short n) {
System.out.println("Short ");
}
public static void go(int n) {
System.out.println("int ");
}
public static void main(String[] args) {
short y = 6;
long z = 7;
go(y);
go(z);
}
}
输出:
int
Long
3个go方法中2个接收的参数都是引用类型的,1个是接收int类型的,而主方法中调用时传递的是原始数据类型,这时java会自动进行装箱操作,但前提是目前传递的参数和3个go方法的参数都不匹配。
所以,go(y)时,Long不匹配,Short也不匹配,而int匹配,原因是short比int的长度要小,int包括了short。
go(z)时,Long不匹配,Short也不匹配,而int也不匹配,原因是long比int的长度要长,int不包括long,所以这时要进行装箱操作,把long转换。
成了Long引用类型,所以输出的是int long。