• 表示程序中可重复使用的一段代码集合可完成独立的功能

方法定义的格式

  1. [修饰符] 返回值类型 方法名([参数类型 形参 1, 参数类型 形参 2, ...]) {
  2. // 方法体;
  3. [return 返回值]; // 当方法需要给调用者返回值时
  4. }
  • 当方法无返回值时,必须给出返回类型 void
  • 参数列表 / 参数清单,包含参数的个数、参数类型、 参数顺序
  • 方法签名:方法名 + 方法参数列表,判断是否是同一个方法的标准
  • 在同一个类中,方法签名是唯一的,否则编译报错
  • 考虑当调用者传入数据的范围不合理时,该如何处理(进行参数校验)

方法定义的位置

  • 在类中,其它方法之外
  • 方法之间声明顺序无规定

方法的调用

  • main 方法由 JVM 来调用
  • 使用 static修饰的方法:属于这个类本身,方法所在类名.方法名([实参 1, 实参 2, …])
  • static修饰的方法:属于该类的对象,不属于这个类本身,使用方法所在类的对象来调用,对象.方法名([实参 1, 实参 2, …])
  • 针对于有返回的方法,调用者可以用对应类型的变量去接收返回值,也可以不去接收

方法重载 Overload

作用

解决了在同一个类中相同功能由于参数列表不同造成方法名不同的问题

规则

  • 两同:同类中,方法名相同
  • 一不同:方法参数列表不同

注意:方法重载与方法的返回值类型、修饰符无关

方法参数的值传递机制

方法被调用时,方法里的参数是以值传递的方式传递的,即传递的是实参的副本

  • 参数是基本数据类型:直接传递实参值的副本
  • 参数是引用数据类型,传递的是实参所引用的十六进制地址值的副本

形参个数可变的方法

  1. // 与 getSum(int[] arr) 的方法签名相同
  2. static int getSum(int... arr) {
  3. // 操作 arr 数组
  4. }
  5. // 调用 getSum
  6. int sum = getSum(1, 2, 3, 4);
  7. int sum = getSum();
  • 定义方法时,在最后一个形参的类型后增加三点(…),表明该形参可以接受多个参数值
  • 作用:调用者不用创建数组;调用时对应的实参可以没有(动态初始化一个数组长度为 0 的数组进行传递)
  • 本质就是一个数组参数:底层,在调用该方法的时候,用对应的实参作为元素创建一个数组,再将该数组传递给形参
  • 注意:一个方法最多只有一个可变参数,必须放在参数列表最后

递归方法

  • 一个方法的方法体实现中再次调用了方法本身
  • 递归一定要向已知方向递归