阅读2分钟,掌握一个Java小细节,你值得拥有!
方法重载指的是方法名相同,参数列表不同(不同的参数类型或者参数顺序或者参数个数)的情况。不过你真的了解么?看看下面这个例子。
public class PrimitiveOverloading { void f1(char x){ System.out.println("f1(char)"); } void f1(byte x){ System.out.println("f1(byte)"); } void f1(short x){ System.out.println("f1(short)"); } void f1(int x){ System.out.println("f1(int)"); } void f1(long x){ System.out.println("f1(long)"); } void f1(float x){ System.out.println("f1(float)"); } void f1(double x){ System.out.println("f1(double)"); } public static void main(String[] args) { PrimitiveOverloading over = new PrimitiveOverloading(); over.f1(5); } }输出结果是什么?为什么呢?让我们实践一下。
你会发现常数5被当做int值处理,所以如果某个重载方法接受int型参数,它会被调用。至于其他情况,如果传入的数据类型(实际参数类型)小雨方法中声明的形式参数类型,实际数据类型就会被提升。
如果没有接受int的方法,就会考虑使用float方法->double方法。如果都没有,就会编译报错。