public class MethodOverload {
public static void main(String[] args) {
System.out.println("The square of integer 7 is " + square(7));
System.out.println("\nThe square of double 7.5 is " + square(7.5));
}
public static int square(int x) {return x * x;
}public static double square(double y) {return y * y;
}
}
- 存在两个名称均为 square 的方法,它们的参数类型不同(一个是 int 类型,一个是 double 类型)。
- 在 main 方法中调用 square 时,Java会根据传入参数的类型( 7 是 int 型, 7.5 是 double 型),自动匹配对应的方法执行,从而实现对不同数值类型的平方计算。
- 这种机制让代码更灵活,用同一方法名就能处理不同类型的输入,提升了代码的可读性与复用性。
上述示例代码展示了Java的“方法重载(overload)”特性。
满足以下条件的两个或多个方法构成“重载”关系:
(1)方法名相同;
(2)参数类型不同,参数个数不同,或者是参数类型的顺序不同。
注意:方法的返回值不作为方法重载的判断条件。
处理无限大的整数
Java提供了一个BigInteger类,支持大整数的加减乘除运算
public static BigInteger calculateN2(int n) {
if(n==1 || n==0){ return BigInteger.valueOf(1); }
return BigInteger.valueOf(n).multiply(calculateN2((n-1))); }
计算机不能精确地表达浮点数(特殊形式的除外),因此,当需要比较两个浮点数是否相等时,应该比较其差的绝对值是否在某个允许范围之内即可