关于楼主的问题,我个人认为:
1、变量x、y、z 都是基本数据类型,所以找方法时先找参数是基本类型的方法,在你的程序中,参数是基本数据类型的方法即为:print(int n)方法一个。
2、传int x 时,成功找到输出 int
3、传short y 时,没找到接收基本类型为short的方法,但是print(int n)方法中,int容量比short大,所以short可以转换成int而不丢失精度,所以调用了print(int n)方法,系统自动把y转换成int传了进去
4、传long z 时,没找到接收基本类型为long的方法,有基本类型为int的方法,但是long转为int的话会丢失精度,所以不能调用print(int n)方法。接着找到了print(Long n)方法,系统会把long自动装包,long就变成了Long对象,所以调用了print(Long n)方法