第四章:方法的声明及使用

时间:2023-01-01 11:44:07

方法的声明及使用
一. 方法的定义
方法的定义在Java中可以使用多种格式,方法暂时使用如下格式进行定义。
【方法的定义格式】

public static 返回值 方法名(类型 参数1,参数2,,,,){
    程序语句;
    [return 表达式];
}

注意:如果不需要传递参数到方法中,只要将括号写出来,不必填入内容。如果方法没有返回值,在我在返回值类型明确写出void。
【定义一个方法,在主方法中进行调用】

public class MethodDemo01{
    public static void main(String args[]){
        printInfo() ;       // 调用printInfo()方法
        printInfo() ;       // 调用printInfo()方法
        printInfo() ;       // 调用printInfo()方法
        System.out.println("Hello World!!!") ;
    }
    public static void printInfo(){
        char c[] = {'H','e','l','l',
            'o',',','L','X','H'} ;  // 定义字符数组
        for(int x=0;x<c.length;x++){    // 循环输出
            System.out.print(c[x]) ; 
        }
        System.out.println("") ;    // 换行
    }
};

程序运行结果为:

Hello,LXH
Hello,LXH
Hello,LXH
Hello World!!!

调用printlnfo()方法时,程序就会跳到printlnfo()方法中执行,当printlnfo()方法全部执行之后就会返回调用处向下继续执行。
方法命名规范要求:在定义类时,全部单词的首字母必须大写,那么在定义方法时也有命名规范要求,即在第一个单词的首字母小写,之后每个单词的首字母大写,如println()方法。希望读者在日后的开发中一定要根据此命名要求进行方法的声明。
【有返回值的方法】

public class MethoDemo02{
    public static void main(String args[]){
        int one = addOne(10,20) ;       // 调用整型的加法操作
        float two = addTwo(10.3f,13.3f) ;   // 调用浮点数的加法操作
        System.out.println("addOne的计算结果:" + one) ;
        System.out.println("addTwo的计算结果:" + two) ;
    }
    // 定义方法,完成两个数字的相加操作,方法返回一个int型数据
    public static int addOne(int x,int y){
        int temp = 0 ;          // 方法中的参数,是局部变量
        temp = x + y ;          // 执行加法计算
        return temp ;           // 返回计算结果
    }
    // 定义方法,完成两个数字的相加操作,方法的返回值是一个float型数据
    public static float addTwo(float x,float y){
        float temp = 0 ;        // 方法中的参数,是局部变量
        temp = x + y ;          // 执行加法操作
        return temp ;           // 返回计算结果
    }
};

运行结果为:

addOne的计算结果:30
addTwo的计算结果:23.6

二. 方法的重载
从MethoDemo02的代码可以看出,同样的加法操作应该统一为add()方法才对。所谓的方法重载就是方法的名称相同,但参数的类型和参数的个数不同。通过传递参数扥个数及类型的不同,可以进行完成不同的操作。
【验证方法的重载】

public class MethoDemo03{
    public static void main(String args[]){
        int one = add(10,20) ;      // 调用整型的加法操作
        float two = add(10.3f,13.3f) ;  // 调用浮点数的加法操作
        int three = add(10,20,30) ; // 调用有三个参数的加法操作
        System.out.println("add(int x,int y)的计算结果:" + one) ;
        System.out.println("add(float x,float y)的计算结果:" + two) ;
        System.out.println("(int x,int y,int z)的计算结果:" + three) ;
    }
    // 定义方法,完成两个数字的相加操作,方法返回一个int型数据
    public static int add(int x,int y){
        int temp = 0 ;          // 方法中的参数,是局部变量
        temp = x + y ;          // 执行加法计算
        return temp ;           // 返回计算结果
    }
    public static int add(int x,int y,int z){
        int temp = 0 ;          // 方法中的参数,是局部变量
        temp = x + y + z ;          // 执行加法计算
        return temp ;           // 返回计算结果
    }
    // 定义方法,完成两个数字的相加操作,方法的返回值是一个float型数据
    public static float add(float x,float y){
        float temp = 0 ;        // 方法中的参数,是局部变量
        temp = x + y ;          // 执行加法操作
        return temp ;           // 返回计算结果
    }
};

运行结果:

add(int x,int y)的计算结果:30
add(float x,float y)的计算结果:23.6
(int x,int y,int z)的计算结果:60

从程序可以看出add()方法被重载了3次而且每次重载时的参数类型或个数都有不同,所以在调用时,会根据参数的类型和个数自动进行区分。
注意:方法的重载一定只是在参数上的类型或个数有所不同。
三. 使用return结束一个方法
在Java的方法定义中,可以使用return语句直接结束一个方法的执行。
【使用return结束方法】

public class MethoDemo05{
    public static void main(String args[]){
        System.out.println("1、调用fun()方法之前。") ;
        fun(10) ;
        System.out.println("2、调用fun()方法之后。") ;
    }
    public static void fun(int x){
        System.out.println("3、进入fun()方法。") ;
        if(x==10){
            return ;        // 结束方法,返回被调用处
        }
        System.out.println("4、正常执行完fun()方法。") ;
    }
};

运行结果为:

1、调用fun()方法之前。
3、进入fun()方法。
2、调用fun()方法之后。

从程序运行结果发现,虽然在return中没有返回任何的内容,但是一旦执行到了return语句之后,方法将不再执行,而返回到被调用处据需向下执行。
四. 方法的递归调用
递归调用时一种特殊的调用形式,属于方法的自身调用:
递归调用
第四章:方法的声明及使用
【递归调用】

public class MethoDemo06{
    public static void main(String args[]){
        System.out.println("计算结果:" + sum(100)) ;    // 调用操作
    }
    public static int sum(int num){     // 定义方法用于求和操作
        if(num==1){                     // 判断是否是加到了最后一个数
            return 1 ;
        }else{
            return num + sum(num-1) ;   // 递归调用
        }
    }
};

运行结果:

计算结果:5050

上面程序完成了递归方法的调用,就相当于sum(100)+sum(33)+….sum(1),从程序的sum()方法中可以发现,递归调用时必须用一个明确的结束条件,然后不断改变传入的数据,才可以实现递归调用。

注意:尽量避免使用递归调用。如果处理不好,有可能出现内存的溢出。