软件工程模块化原则
- Modules(模块):将一个复杂的系统划分为子模块,便于设计、实现和维护
- Java中的程序模块:方法、类、包
- Java程序中最基本的构造单元是类,而类中最重要的单元是方法
Java模块化实例:JDK中的Math类
java.lang.Math类提供了通用的数学方法,这些方法都是静态方法,可以用类名.方法名直接调用、
静态导入
从JDK5.0开始,支持一种称为“静态导入”的方法
import static java.lang.Math.*;
System.out.println(abs(-100));
//静态导入后允许Java代码中省略类名只写静态方法名,和下面的语句等价
System.out.println(Math.abs(-100));
类方法的编写
随机数生成
两种方法
- 使用Random类(更方便)
JDK提供了一个Random类,可以方便的生成随机数
相同seed的Random对象会生成相同的随机数
通常使用以下方法生成较好的”随机数“,以当前时间为种子
Random ran = new Random(System.currentTimeMills());
- 使用Math类中的random方法
(int)(Math.random()*6)//产生0-5的随机数
参数可变的方法
- 从JDK5.0开始,Java支持可变参数的方法
public class welcome1{
public static double max(double...values)//这里的参数的数目是可变化的
{
double largest=Double.MIN_VALUE;
for (double v:values)
if(v>largest) largest=v;
return largest;
}
public static void main(String args[]) {
System.out.println("Max:"+max(1,11,300,2,3));
}
}
可变参数的特点
- 只能出现在方法参数列表的最后
- ‘’…’'位于变量类型和变量名之间,前后有无空格均可
- 调用可变参数方法时,编译器为该可变参数隐式创建一个数组,在方法体中以数组的形式访问可变参数
方法重载(overload)
- 满足以下条件的两个或多个方法构成“重载”关系
(1)方法名相同
(2)参数类型不同,个数不同,参数类型的顺序不同
⚠️返回值不可作为判断标准
递归
处理大数字和浮点数
当要处理的数据大于计算机所能处理的位数,计算机会进行自动截断,导致出现误差