一、随机数生成实践
1. 自定义算法生成随机数:按纯随机数发生器参数(Modulus=2³¹-1,Multiplier=16807,C=0),以公式xₙ₊₁=(a*xₙ + c) mod m编写方法,生成1000个随机整数,确定种子后循环计算即可。
2. 对比多种生成方式:Math.random()可生成0.0-1.0的double值,经计算得指定范围整数;Random类更灵活,相同种子生成相同序列,以当前时间为种子随机性更优,能生成多类型随机数。
二、方法重载认知
分析MethodOverload示例,square方法因参数类型(int、double)不同构成重载,明确重载判断依据是方法名相同且参数(类型、个数、顺序)不同,与返回值无关。查看System.out.println(),其多个重载版本可接收不同类型参数,适配多样输出需求。
三、递归相关实践
1. 递归求n!:依据n! = n*(n-1)!、1! = 1的定义编写方法,判断n=1时返回1(结束条件),否则递归调用计算,体会“分解-回溯”的递归特点。
2. 递归与递推对比:用循环实现递推求n!,从1累乘至n。对比可知递推效率高,递归代码简洁,开发中需按需选择。
四、大数字与浮点数处理
1. 解决阶乘溢出:int类型计算大n阶乘会溢出,改用BigInteger类,通过其multiply方法实现大整数乘法,正确计算大阶乘。
2. 浮点数比较:避免直接用“==”,通过比较两数差的绝对值是否小于1e-10来判断相等,避免因浮点数无法精确表示导致的错误。
这些实践让我加深了对Java方法的理解,提升了编码与问题解决能力,后续会持续积累代码,完善个人代码仓库。