0%

方法

一,方法的概念

概念:方法就是一个包含了功能所需要的执行语句的代码块

好处:

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

二,方法的组成

1
2
public            static           void          main         (String[] args)     {} 
范围(权限)修饰符 其他的修饰符 返回类型 方法名 参数列表 方法体
  1. 范围(权限)修饰符:限定了方法的使用范围
  2. 其他的修饰符:static 静态的、final 最终的、abstract 抽象的、native 本地的、synchronized 同步的
  3. 返回类型:表示方法运行完毕后返回结果的数据类型
  4. 方法名
  5. 参数列表:表示方法在执行过程中需要的数据
  6. 方法体:方法中具体功能的实现

三,方法的调用

  1. 调用本类中的方法

    1
    方法名(参数);
  2. 调用其他类中的方法

    1
    2
    3
    4
    5
    // 如果该方法被static修饰
    该方法所在类的类名.方法名(参数);
    // 如果该方法没有被static修饰
    数据类型 对象名 = new 数据类型();
    对象名.方法名(参数);

注:

  1. 方法被调用后会进入栈内存;方法运行完毕后会从栈内存中释放;栈内存的特点:先进后出
  2. 方法的定义位置是在类中,其他方法之外的任意位置
  3. 方法只有在调用后才会执行

四,方法的参数

4.1 形式参数

定义方法时的参数列表叫形式参数,也叫形参

作用:限定了调用时,必须根据形参的个数、类型、顺序来传入参数

4.2 实际参数

调用方法时的参数列表叫实际参数,也叫实参

实参是真正参与运算的数据,实参会必须根据形参的个数、类型、顺序来传递给形参

注:

  1. 实参传递给形参时存在自动类型转换
  2. 实参可以是常量、变量、表达式、还可以是其他方法返回值

五,方法的返回类型

返回指的是方法在运行完毕后,会将运行的结果返回给调用者

  1. 返回类型是 void

    表示这个方法没有返回值,这个方法在运行完毕后,不会将任何结果返回给调用者;

    返回类型是void的方法可以使用return关键字来结束方法,此时return的功能仅仅是结束方法而不能返回结果。

  2. 返回类型不是 void

    表示这个方法有返回值,返回的结果就是指定数据类型的值,这个方法在运行完毕后,会将结果返回给调用者;

    此时这个方法必须有return,并且return后必须跟上返回的结果,返回结果的类型与返回类型必须一致

    注:

    1. 一个方法的返回类型是什么可以看成这个方法就是这个类型的值
    2. 返回结果与返回类型存在自动类型转换

return关键字:

  1. 返回类型是void的方法,可以有return,也可以没有return,如果有return,return后一定不能有值,程序运行到return时会立即结束方法
  2. 返回类型不是void的方法,必须有return,以及返回的结果

六,参数和返回类型是引用数据类型

1
2
3
4
5
6
7
8
9
10
11
public static void main(String[] args) {
int i = 3;
f1(i);
System.out.println(i);// 3
}

public static void f1(int i){
System.out.println(i);// 3
i = 4;
System.out.println(i);// 4
}
1
2
3
4
5
6
7
8
9
10
11
public static void main(String[] args) {
int[] arr = {1,2,3};
System.out.println(arr);// arr的地址
f2(arr);// 传递了地址
System.out.println(arr[0]);// 4
}

public static void f2(int[] b){
System.out.println(b);// 接收了实参传递过来的地址,当前形参b的地址与实参arr的地址是同一个
b[0] = 4;// 对b数组中的元素进行了赋值,由于arr的地址与b的地址是同一个,所以也修改arr数组中的元素值
}

参数和返回类型是引用数据类型时,传递的都是地址

七,可变参数

格式:

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

当传入实参时,可以传入任意多个指定类型的参数

特点:

  1. 可变参数的本质是数组
  2. 可变参数只能出现在参数列表的末尾

注:

1
2
3
public static void f1(String...a){
}
// 调用该方法时,可以传入一个String类型的数组,或者任意个String类型的值
1
2
3
public static void f1(String[]a){
}
// 调用该方法时,只能传入一个String类型的数组

八,方法的重载

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

方法名相同,参数列表不同

参数列表:个数不同、类型不同、顺序不同

好处:简化了方法名的定义,便于调用和记忆