一、定义

访问修饰符 返回数据类型 方法名(形参列表...){//方法体
    语句;
    return  返回值;
}

1、形参列表:表示成员方法输入,例如:getSum(int num1,int num2)

2、数据类型(返回值类型):表示成员方法输出,void 表示没有返回值

3、方法体:表示为了实现某一功能代码块

4、return 语句不是必须的

二、使用细节

        1、返回数据类型        

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

                (2)、返回类型可以是任意类型,包括基本类型或引用类型(数组、对象)

                (3)、如果方法要求有返回类型,则方法体中最后执行语句必须是return语句,而且要求返  回值类型必须和return的值类型一致或兼容

public double f1(){

    int a = 100;
    return a;//可行,int -> double 自动类型转换

}

               (4)、如果返回值类型是void,则方法体中可以没有return语句,或只写return; 

public void f2(){
    int n = 10;
    return n;//会报错,错误:不兼容的类型:意外的返回值

}

public void f3(){//返回值类型为void,没有return语句可行或只写return;

    System.out.println("hello world");

}
public void f4(){//返回值类型为void,只写return;可行

    System.out.println("hello world");
    return ;//不可以有返回的值

}

2、形参列表

              (1)、一个方法可以有0个参数,也可以有多个参数,中间用逗号隔开

public void f5(){//没有参数
    

}
public void f6(int n1,int n2){//多个参数


}

                (2)、一个参数可以为任意参数类型,包含基本类型或引用类型

public void f7(int[] arr){//引用类型参数

}

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

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

public class test{
    public static void main(String[] args){
        AA a = new AA();
        int sum = a.getSum(10,20);//10、20为实际参数


    }



}

class AA{
    
    public int getSum(int n1,int n2){//n1、n2为形式参数

        return n1 + n2;

    }

}

  3、方法体

                方法体里面写具体的功能,但不能定义方法,即方法不能嵌套定义

class AA{

    public void f8(){
        
        public void f9(){//会报错,错误:非法表达式的开始


        }
    }

}

4、方法调用

                (1)、同一个类中的方法调用:直接调用即可

                (2)、跨类中的方法A类调用B类方法:需要通过对象名.方法名()

public class test{
    public static void main(String[] args){
        //跨类调用方法需要对象名
        AA a = new AA();
        a.m1();

    }
}
class AA{
    
    public void m1(){
        System.out.println("m1方法被调用");
        m2();//同一个类中的方法调用:直接调用即可
        System.out.println("m1调用结束");
    } 
    
    public void m2(){
        System.out.println("m2方法被调用");
        System.out.println("m2调用结束");
    }

}