当前位置 : 主页 > 编程语言 > java >

Java 方法(方法的定义,可变参数,参数的传递问题,方法重载,方法签名)

来源:互联网 收集:自由互联 发布时间:2023-01-30
目录 一、方法(Method)概念 二、可变参数(Variable) 三、方法的参数传递问题 1. 基本数据类型 2. 引用数据类型 四、方法签名(Method Signature) 五、方法的重载(Overload) 一、方法(
目录
  • 一、方法(Method)概念
  • 二、可变参数(Variable)
  • 三、方法的参数传递问题
    • 1. 基本数据类型
    • 2. 引用数据类型
  • 四、方法签名(Method Signature)
    • 五、方法的重载(Overload) 

      一、方法(Method)概念

      •  1、Java 中的方法就是其他编程语言中的函数(Function)
      •  2、方法的定义格式:

      • 访问修饰符有4种:public、protected、default、private【后期会详细说明】
      • 返回值类型可能是8大基本数据类型、引用类型或无返回值(void
      • 方法名需符合标识符命名规范、方法名需见名知意、方法名需是小驼峰(类名是大驼峰)
      • 参数列表是该方法需要调用者传入的值(包括参数类型和参数名)【后期会详细说明】
      • 方法体中才可编写 Java 语句(并不是所有花括号中都是方法体:如类定义的花括号中不是方法体)

      下面是方法体代码案例:

      public class MethodBody {
      
          // 1.代码块
          {
              System.out.println("【{}】是方法体");
          }
      
          // 2.静态代码块
          static {
              System.out.println("【static {}】是方法体");
          }
      
          // 3.方法
          public void run(int age) {
              System.out.println("方法的花括号中是方法体");
      
              // 4.if
              if (age == 18) {
                  System.out.println("if 语句的花括号中是方法体");
              }
      
              // 5.for
              for (int i = 0; i < age; i++) {
                  System.out.println("for 循环的花括号中是方法体");
              }
      
              // 6.while
              while (age > 50) {
                  System.out.println("while 循环的花括号中是方法体");
              }
      
              // 7.switch-case
              switch (age) {
                  // 错误:在该区域写代码是错误的(该区域不是方法体)
                  // System.out.println(age); // ERROR
                  case 1: {
                      System.out.println("switch 语句的 case 语句块是方法体");
                  }
              }
      
              // 8.do-while
              do {
                  System.out.println("do-while 循环的花括号中是方法体");
              } while (age < 5);
          }
      
      }

      其实可以理解为只有三个地方是代码块:

      ① 代码块
      ② 静态代码块
      ③ 方法中
      但是,当初老师教的时候把 if、while、for 等也归纳为方法体

      补充:定义方法可能还会有其他修饰符(eg:static、final、abstract),后面还会详细介绍

      仔细看下面的代码, 学会定义方法:

      public class CreateMethodDemo {
          public static void main(String[] args) {
              int sum1 = CreateMethodDemo.sumOne2Hundred(1, 100);
              // sum1 = 5050
              System.out.println("sum1 = " + sum1);
      
              int sum2 = CreateMethodDemo.sumOne2Hundred(1, 1000);
              // sum2 = 500500
              System.out.println("sum2 = " + sum2);
      
              int sum3 = CreateMethodDemo.sumOne2Hundred(1, 10000);
              // sum3 = 50005000
              System.out.println("sum3 = " + sum3);
          }
          /**
           * 计算[start, end]的累加和
           *
           * @param start 起始值
           * @param end   结束值
           * @return [start, end]的累加和
           */
          private static int sumOne2Hundred(int start, int end) {
              int sum = 0;
      
              for (int i = start; i <= end; i++) {
                  sum += i;
              }
              return sum;
          }
      }

      二、可变参数(Variable)

      思考:编写程序计算多个整数的和。eg:计算【2, 5, 6, 7, 66, 53】的和

      public class VariableParameter {
          public static void main(String[] args) {
              int[] arr = {2, 5, 6, 7, 66, 53};
              VariableParameter vp = new VariableParameter();
              // sumByArr = 139
              System.out.println(vp.sumByArr(arr));
          }
      
          /**
           * 计算多个整数的和(通过数组)
           *
           * @param arr (数组中存放需要进行求和的多个整数)
           * @return 数组中多个整数的和(类型是字符串)
           */
          private String sumByArr(int[] arr) {
              if (arr == null || arr.length < 1) return "arr 数组为 null, 为数组元素为 0";
      
              int sum = 0;
              for (int i = 0; i < arr.length; i++) {
                  sum += arr[i];
              }
              return "sumByArr = " + sum; 
          }
      }
      

      思路1:

      网友评论