Skip to content

成员方法


知识迁移

类比 C 语言中的函数,方法(可以理解为一个类具有某种行为),刚好可以通过写一个函数的方法实现,在 Java 中称为方法

方法的作用

可以更方便的调用某些功能,避免代码冗余,例如可以写一个mytool类,把需要的功能全部写在类方法中(封装起来),需要的时候直接调用,非常方便

基本介绍

示例代码

java
public class method{
    public static void main(String[] args){
    person person1 = new person();
    person1.name = "jackson";
    person1.age = 18;
    int a = 10;
    int b = 10;
    int[] arr = {1,2,3};
    int sum = person1.getsum(a,b);
    person1.printarray(arr);
    System.out.println("age: " + person1.age);
    System.out.println("name: " + person1.name);
    System.out.println("person object ---> getsum method result: " + sum);
    }
}
class person{

    String name;
    int age;

    public int getsum(int a,int b){
        return a + b;
    }

    public void printarray(int[] arr){
        for(int i =0; i < arr.length; i++){
            System.out.print("arr[" + i + "]: " + arr[i] + " ;  ");
        }
        System.out.println();
    }
}

代码解读

(1)public 表示公开的

(2)void 表示没有返回值,这里可以根据返回的数据类型而改变

(3)getnum 和 printarray 都是方法名

(4)方法中可以传参(称之为形参),也可以不传

方法的使用

1. 调用方法:对象 . 方法名( ),( ) 表示形参列表

(1)方法如果有返回值,需要使用 return 关键字返回返回值,在调用时,可以使用方法的返回值对应数据类型的一个变量接收返回值

(2)传参支持兼容类型(自动类型转换),例如:把int赋值给double

2. 跨类调用方法

(1)使用 new 创建一个对象,使用 对象.方法名 ( ) 的方式调用,能否成功调用还与访问修饰符有关,后续详谈,这里暂且提一下

(2)注意:只能在类方法里实现跨类调用方法,否则会报错

代码示例

java
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
    person person1 = new person();
    person1.name = "jackson";
    person1.age = 18;
    int a = 10;
    int b = 10;
    int[] arr = {1,2,3};
    int sum = person1.getsum(a,b);
    System.out.println("age: " + person1.age);
    System.out.println("name: " + person1.name);
    System.out.println("person object ---> getsum method result: " + sum);
    person1.printarray(arr);
    }
}
class person{
    String name;
    int age;
    public int getsum(int a,int b){
        return a + b;
    }
    public void printarray(int[] arr){
        for(int i =0; i < arr.length; i++){
            System.out.print("arr[" + i + "]: " + arr[i] + " ;  ");
        }
        System.out.println();

        //注意:这个调用需要在方法里面调用
        b method_b = new b(); //创建b类对象
        method_b.methodb(); // 跨类调用方法
    }

}
class b{
    public void methodb(){
        System.out.println("我是b类的一个方法,你实现了跨类调用");
    }
}

//输出结果
age: 18
name: jackson
person object ---> getsum method result: 20
arr[0]: 1 ;  arr[1]: 2 ;  arr[2]: 3 ;
我是b类的一个方法,你实现了跨类调用

⭐ 方法的调用机制

(1)调用方法时,会在内存中开辟一个独立的栈空间

(2)方法执行完成或者遇到 return语句时,就会返回(结束方法执行)

(3)方法执行结束后,返回到调用方法的地方(返回的是地址),栈空间释放

使用细节

形参列表

(1)一个方法可以有 0 个或者多个参数,中间用逗号隔开,比如 getSum (int n1, int n2)

(2)参数类型可以为任意类型,包含基本类型引用类型,比如 printArr ( int [ ] [ ] map )

(3)调用带有参数的方法时,一定要对应参数列表传入相同类型兼容类型的参数

(4)方法定义时的参数称为形式参数,简称形参;方法调用时的传入参数称为实际参数,简称实参;实参和形参的类型要一致或兼容个数、顺序必须一致

方法体

方法体中写完成功能的具体语句,可以为输入、输出、变量、运算、分支、循环、方法调用,但里面不能再定义方法,方法不能嵌套定义

返回值

(1)一个方法最多一个返回值

如何实现返回多个返回值返回数组

(2)返回类型可以为任意类型,包含基本类型引用类型(数组,对象)

(3)如果方法有返回值,则方法体的最后必须有 return 语句,否则无法通过编译

(4)如果方法是void,则方法体中可以没有 return 语句,或者只写 return