4、方法

161 阅读4分钟

一、概念

用于解决程序中某一特定问题的若干条语句组成的代码片段就是方法

好处:

  1. 提高了代码的复用性
  2. 隐藏了功能的实现细节

二、方法的组成

public     static     void     main  (String[] args) {    }
权限修饰符  特殊修饰符  返回类型  方法名  参数列表       方法体

三、方法的定义和调用

方法的定义:

格式:

public static 返回类型 方法名 (参数列表){
 方法体
}

注:

  1. 方法要调用才能执行
  2. 方法定义的位置可以是类中,其他方法之外的任何地方

方法的调用:

格式:

// 调用本类中的方法
方法名(参数);
​
// 调用其他类中的static(静态)方法
类名.方法名(参数);
​
// 调用其他类中的非static(静态)方法
数据类型 对象名 = new 数据类型(参数);
对象名.方法名(参数);

注:调用方法时不要循环调用

四、参数列表

参数就是方法在运行过程中需要的数据

形式参数(形参):在定义方法中,用于告知调用者调用该方法时需要参数的个数、类型和顺序

实际参数(实参):在调用方法中,实际参数是方法运行时真正参与运算的数据

注:

  1. 实参的个数、类型和顺序必须与形参一致
  2. 实参传递给形参时,存在自动类型转换,实参传递给形参本质上就是赋值行为
  3. 实参可以是常量、变量、表达式还可以是其他方法的返回
  4. 实参传递给形参时,如果传递的是引用数据类型,传递的是地址

五、返回类型

返回类型就是方法在运行完毕后返回结果的数据类型

返回类型分类:

  1. 无返回:也就是返回类型是void,表示方法在运行完毕后不会返回出任何结果,无返回的方法不能使用变量来接收也不能输出
  2. 有返回:也就是返回类型不是void,表示方法在运行完后后会返回指定类型的结果,有返回的方法可以使用变量来接收可以输出;有返回的方法,必须要通过return关键字来返回运行的结果

注:

  1. 如果一个方法返回的是某一种指定类型,那么调用这个方法就相当于在使用这个类型的值
  2. 返回的结果与返回类型存在自动类型转换
  3. 返回的结果可以是变量、常量、表达式还可以是其他方法的返回
  4. 返回结果的类型如果是引用数据类型,返回的是地址

关键字:return

  1. 结束方法
  2. 返回结果

注:

  1. 返回类型不是void的方法必须有return,并且return后要有返回结果
  2. 返回类型是void的方法也可以有return,此时这个return后不能有返回结果,并且这个return只用于结束方法

六、方法的重载

重载:overload

同一个类中,多个方法具有相同的方法名,不同的参数列表就是方法的重载

简单的说:方法重载就是方法名相同参数列表不同

参数列表不同指的是参数的个数、类型、顺序不同

重载的好处:方便简单

七、可变参数

在参数类型已经确定的情况下,该类型的参数个数可以是任意的

public static 返回类型 方法名(数据类型...变量名){
    方法体
}

注:

  1. 可变参数的本质是数组

    示例:
    public static void main(String[] args) {
            f(33,45,12,6);
        }
        public static void f(int... i){
            System.out.println(i);//输出的是形为[I@1540e19d的地址值
            System.out.println(i[0]);//33
            System.out.println(i.length);//4
        }
    
  2. 实参可以是指定类型的任意个值,也可以是该类型的数组

    示例:
    public static void main(String[] args) {
            int[] num = {12,34,56,11,23,4};
            f(num);
        }
        public static void f(int... i){
            for (int t : i){
                System.out.print(t + "\t");//12 34  56  11  23  4   
            }
        }
    
  3. 可变参数只能出现在参数列表的末尾

    示例:
    public static void f(int... i,int j){//报错
    }