java方法的介绍以及运用

方法

  1. 定义:类似于其他语言中的函数,是一段用来完成特定功能代码片段,方法包含一个方法头和一个方法体。

  2. 一个方法中所有部分:

    • 修饰符
    • 返回值类型
    • 方法名
    • 参数类型:
      1. 形式参数:用来定义方法的参数
      2. 实际参数:用来实际调用传递的参数
    • 方法体
  3. 方法的调用:

    • 对象名.方法名(实参列表)

    • 当方法返回是一个值时,方法调用常常被当做一个值

    • 当方法返回的是void,方法调用一定是一条语句。

      System.out.print("hello,man")

    • 例子:比较输入的两个数字大小:

      //比大小方法
      public static int max(int num1,int num2){
          int result = 0;
          if (num1==num2){
              System.out.println("两次输入大小相同");
              return 0;
          }
          if (num1>num2){
              result = num1;
          }else {
              result = num2;
          }
          return result;
      }
      public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
          System.out.println("请输入第一个数");
          int num1 = scanner.nextInt();
          System.out.println("请输入第二个数");
          int num2 = scanner.nextInt();
          int max = max(num1,num2);
          System.out.println("最大的数为:"+max);
      }
      
  4. 方法的重载

    • 重载就是在一个类中有相同的函数名称,但是参数(形参不同)的参数。

    • 方法重载规则

      • 方法名称必须相同
      • 参数列表必须不同,如(个数、类型、参数排列顺序不同)
      • 方法的返回值类型可以相同也可以不同
      • 仅仅返回类型不同不足以称为方法的重载
    • 实现理论:方法名称相同时,编译器通过调用方法的参数个数,参数类型等去逐个匹配,以选择对应的方法,如果匹配失败则编译器报错:

      //比大小方法
      public static int max(int num1,int num2){
          int result = 0;
          if (num1==num2){
              System.out.println("两次输入大小相同");
              return 0;
          }
          if (num1>num2){
              result = num1;
          }else {
              result = num2;
          }
          return result;
      }
      //参数类型不同
      public static double max(double num1,double num2){
          double result = 0;
          if (num1==num2){
              System.out.println("两次输入大小相同");
              return 0;
          }
          if (num1>num2){
              result = num1;
          }else {
              result = num2;
          }
          return  result;
      }
      public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
          System.out.println("请输入第一个数");
          int num1 = scanner.nextInt();
          System.out.println("请输入第二个数");
          int num2 = scanner.nextInt();
          int max = max(num1,num2);
          //double max = max(num1,num2);通过调用不同类型的参数,编译器选择相应的方法去执行 
          System.out.println("最大的数为:"+max);
      }
      
  5. 可变参数(不定项参数)

    • 在指定参数类型后加上省略号(...)

    • 一个方法中只能指定一个可变参数,且必须放在最末尾,其他任何参数必须在他之前声明。

      //比大小方法
      public static void max( double... number) {//可变长参数
          if (number.length == 0) {
              System.out.println("你没有输出任何数");
              return;
          }
          double result = number[0];
          //排序
          for (int i = 0 ;i<number.length;i++){
              if (number[i]>result){
              result = number[i];
              }
          }
          System.out.println("最大的数为:"+result);
      }
      public static void main(String[] args) {
          max(34,35,2,8,99);//调用参数时,参数个数可以任意设置,他的本质就是数组
         max(new double[]{1,5,2,4,9,});
      }
      
  6. 递归:(方法调用自己本身)

    • 例子:输入一个数,输出该数的阶乘

      public static void main(String[] args) {
          Scanner scanner = new Scanner(System.in);
          int i = scanner.nextInt();
          System.out.println(f(i));//打印函数值
      }
      public static int f(int i){
          int resoult=0;
          if (i ==1){
              resoult=1;
          }else {
             resoult= i*f(i-1);//递归,当条件满足时继续调用f方法。
          }
          return resoult;
      }
      
    • 一般不建议用递归,使用的前提是我们调用函数时的基数小,比如上面例子中的i当i较小的时候使用,如果较大会占用大量的内存。

posted @ 2021-07-21 17:33  荒废两年学JAVA  阅读(70)  评论(0)    收藏  举报