方法内容总结
一、方法的思想来源
用李冰“积薪烧石”和愚公凿石对比引出方法的意义:方法是解决问题的新思路,突破人力局限;程序开发中,把大程序拆分成单元、模块,实现分工协作,开启结构化编程。
编程学习要学会对知识分类整理,建立自己的代码仓库,提高开发效率。
二、Java方法核心知识点
1. 模块化原则:Java模块分为方法、类、包;类是基础单元,方法是类最重要的成员。
2. 静态方法
- JDK的 Math 类提供大量静态数学方法,使用 类名.方法名() 调用,例如 Math.sqrt() 。
- JDK5.0支持静态导入 import static java.lang.Math.*; ,调用时省略类名。
3. 方法定义语法: 访问权限 [static] 返回值类型 方法名(参数列表){语句; return 表达式;} 。static修饰的静态方法,可直接通过类调用。课件示例自定义求平方的static方法。
4. 随机数实现
- Math.random() :生成 [0,1) 小数,强转实现指定范围随机整数。
- Random 类:可指定种子;相同种子会生成完全一样的随机序列;常用当前时间戳 System.currentTimeMillis() 作为种子。
5. 可变参数(JDK5新增)
- 语法: 类型 ... 变量名 ;只能放在参数列表最后;底层编译器自动转为数组,方法内按数组访问。
6. 方法重载
- 条件:方法名相同,参数列表不同(个数、类型、参数顺序);返回值不能作为重载判断条件。
- 例子: System.out.println() 拥有大量重载版本,适配不同数据类型。
三、递归
1. 概念:方法自己调用自己;将大问题拆解为规模更小的同类子问题,直到基线条件终止调用。
2. 阶乘示例:n! = n\times(n‑1)!,基线条件:1!=1。
3. 递归编写模式
- 开头判断递归终止条件;
- 存在自调用语句;
- 参数不断变化(一般变小),保证递归能够结束。
4. 递归 vs 递推
- 递归:先向下拆解,再回溯计算结果;
- 递推:循环实现,从小到大一步步计算。
- 同一问题两种方式均可实现,根据场景选用。
四、大数字与浮点数处理
1. 整数溢出问题:int、long存储空间固定,数值超出范围会溢出,出现负数等错误结果,例如大数阶乘。
2. BigInteger大整数类:专门处理超大整数,通过对象方法 multiply() 等完成四则运算,不受位数限制。
3. 浮点数比较陷阱:double不能精确存储部分小数,不能直接用 == 判断相等;应当判断两个数差值的绝对值小于极小阈值,如 Math.abs(i-j) <1e‑10 。
五、课后实践任务
1. 阶段1:写程序自动生成30道小学四则运算题。
2. 阶段2增强需求:题目不重复;减法无负数、乘法结果不超四位、除法必须整除;实现答题、统计正确率、倒计时计时功能,功能用方法封装实现。
3. 作业:整理课上动手动脑习题,以博客形式发布。
核心思想:方法用于封装重复逻辑,提高复用;递归用于分治问题;注意基本数据类型溢出、浮点数精度陷阱。

浙公网安备 33010602011771号