【Java】方法

方法定义

方法就相当于C语言中的函数;

在Java中,方法是不能嵌套定义的

public static 返回值 方法名(形式参数列表){方法体}

// public是修饰符

// static是关键字

// 当方法有返回值时,任何情况下都需要return(return表示当前方法的结束)

 public static int max2(int a, int b) {
// 有返回值必须return
     return a > b ? a : b;
 }
 

方法调用

  • 方法的传参:参数个数、参数类型、参数顺序都是需要匹配的;
  • 如果当前方法被调用了,并且这个方法有返回值,就需要接收这个返回值;
  • 方法的调用都是在栈上开辟内存的,在栈上开辟内存都是从高地址向低地址开辟,开辟的内存叫做栈帧;
  • 当前方法执行结束,当前方法的栈帧则会从栈上进行销毁;
 public static int max2(int a, int b) {
// 有返回值必须return
     return a > b ? a : b;
 }
public static int max3(int a, int b, int c) {
// 在max3这个方法中调用了max2方法
     int tmp = max2(a, b);
     return max2(tmp, c);
 }
 public static void main(String[] args) {
     // 创建方法求两个数的最大值max2,随后再写一个求3个数的最大值的函数max3。
     // 在max3这个函数中,调用max2函数,来实现3个数的最大值计算

// 在main方法中调用了max2方法和max3方法
     int max = max2(3,5);
     System.out.println(max);

     int tmp = max3(4,1,8);
     System.out.println(tmp);
 }

方法重载

方法重载:

  • 一样:方法名;
  • 不一样:参数列表(个数、数据类型、顺序),至少其中一个不一样才可以;

(返回值是否一样不影响方法重载);

public static int sum(int a, int b) {
     return a + b;
 }
 public static double sum(double a, double b, double c) {
     return a + b + c;
 }
 public static void main(String[] args) {
     // 重载
     // 在同一个类中,分别定义求两个整数之和的方法 和 三个小数之和的方法
     int sum1 = sum(2, 3);
     double sum2 = sum(4, 2.4, 7.6);
     System.out.println(sum1);
     System.out.println(sum2);
 }

递归

  • 递归就是自身又包含了自身,自己调用自己;
  • 递归在数学上相当于数学归纳法,有一个起始条件和一个递推公式;
  • 递归自己调用自己,就会在栈上不断地开辟栈帧;
  • 递:先变少;
  • 归:再还原,是倒着的;

(注意常见错误:结束条件错误、或者没有结束条件)

public static int factorial(int n) {
     if(n == 1) {
         return 1;
     }
     int tmp = n * factorial(n - 1);
     return tmp;
  }
 public static void main(String[] args) {
     // 递归求n的阶层
     // 4 * 3 * 2 * 1 = 24
     int fac = factorial(4);
     System.out.println(fac);
 }

你可能感兴趣的:(java)