从零学Java:学习笔记05-Java方法函数、方法函数重载、递归结构的学习

方法函数:

方法函数是Java非常重要的一章内容、在Java语言中、函数也称之为方法。

  • 什么是方法函数呢?它的好处是什么?
    方法就是一段用来完成特定功能的代码片段、方法是类或对象实例的行为特征的抽象和功能的实现、在面向对象的Java语言中、一个应用程序的基本单位是类、方法是从属于类和对象的、它扮演的角色相当于行为动作。
    方法对于Java程序非常重要、它能够对某些功能进行抽取成方法中的代码片段、提高开发效率、程序的可读性更强。
  • 方法函数的基本语法结构:
  •  [权限修饰符][其他修饰符] 返回值类型 方法名([形式参数]){
    			代码片段
    			[return][返回值]
    		}
    

[]进行书写的都是可选的

  • 方法函数的特征有哪些?
    • 形式参数:
      用于接收调用该方法的环境所传递过来的数据
    • 实际参数:
      在调用方法的环境中进行实际传递的数据
    • 返回值:
      方法在执行完毕后返回给调用该方法的环境的数据
    • 返回值类型:
      指定需要返回给调用该方法的环境的数据类型、如不需要返回值、也需要void。
    • 权限修饰符:
      指定改该方法被调用时调用方需要具备一定的权限
    • 其他修饰符:
      指定该方法的环境、将直接影响到方法的生命周期或其他。
  • 方法函数的注意事项:
    • 实际参数的数量、数据类型、次序都必须与调用方法的形参列表保持一致匹配。
    • return关键字能够终止方法的执行、也能够返回数据到调用该方法的环境中。
    • Java的方法和函数传递参数的时候是遵循值传递的原则(传递的都是值的副本)、基本数据类型传递的是副本的值、引用数据类型传递的是该对象引用的值(两个值指向同一个对象)
public class Main{

    public static void main(String [] args){
        Main main = new Main();
        main .demo1();// 在方法内部输出一段话
        main .demo2(3,4);// 3,4就是作为实际传递到该方法的参数 在方法内部进行运算但没有返回而是打印
        System.out.println(main.demo3()+10); // 由于该方法返回的就是int类型、所以调用方法的时候直接可以将它当作是int数据类型的变量进行运算也是合法的
        int i = main.demo4(5,6); // 该方法返回的是int类型 理所当然使用int数据类型的变量进行接收
        System.out.println(i);
    }
    /**
     函数定义的基本语法:
     [权限修饰符][其他修饰符] 返回值类型 方法名([形式参数]){
     代码片段
     [return][返回值]
     }
     */
    // 没有参数 没有返回值的方法
    public void demo1(){
        System.out.println("Hello I Love Java");
    }
    // 有参数 没有返回值的方法
    public void demo2(int a,int b){
        int sum = a+b;
        System.out.println(sum);
    }
    // 没有参数 有返回值的方法
    public int demo3(){
        /**
         return关键字有两个作用、它既意味着方法的结束、也能够在需要返回值的时候也可以返回数据
         */
        return 0;
    }
    // 有参数 有返回值的方法
    public int demo4(int a,int b){
        int sum = a+b;
        /**
         return关键字有两个作用、它既意味着方法的结束、也能够在需要返回值的时候也可以返回数据
         */
        return a+b;
    }
}

控制台结果打印:
在这里插入图片描述

方法函数的重载:

所谓的方法重载、指的是一个类可以定义多个相同方法名、但参数不同的方法。在调用方法的时候Java程序会根据不同的参数自动匹配对应的方法。
需要注意的是、实现重载后的方法、实际上是完全不同的方法、仅仅只是方法名相同而已。

  • 重载方法的构成要素:
  •  1.形式参数的个数、形式参数的类型、形式参数的顺序不同。
     2.返回值类型不同是不能构成重载的
     如:
    	public int add(int a,int b) 和 public void add(int a,int b)
    	public int add(int a,int b) 和 public void add(int b,int a)
    这样是不构成重载的 需要注意形式参数变量名的变化和重载没有任何关系
    
public class OverLoadMain {

    public static void main(String [] args){

       System.out.println(add(1,2,3));
       System.out.println(add(3,2.5));
       System.out.println(add(2.5,6));
       System.out.println(add(3,8));
    }


    // 简单的加法运算
    public static int add(int a,int b ){

        return a+b;
    }
/*
    编译报错、参数列表次序、数据类型相同 因此不构成重载
    */
    public static int add(int b,int a){

    }
*/
    // 构成重载 方法名相同而参数个数不同
    public static int add(int a,int b,int c){
        return a+b+c;
    }

    // 构成重载 方法名相同、参数个数相同、但参数的数据类型不同
    public static double add(double a,int b){

        return a+b;
    }
    // 构成重载 方法名相同、参数个数相同、参数的数据类型(次序)不同
    public static double add(int b,double a){

        return a+b;
    }
    
   // 不构成重载 参数类型相同
    public static double add(int a,double b){
    
        return a+b;
    }
}

递归结构:

  • 什么是递归?
    递归的基本思想实际就是“自己调自己”、而我们利用递归来实现一个程序解决复杂的问题、递归结构包括两个部分:
    • 递归体:
      调用自身方法、我们称之为递归体
    • 递归头:
      不调用自身方法、我们称之为递归头、递归的程序必然需要递归头的存在、如果没有递归头那程序会进入死循环的状态、递归头也可以看作是递归结束的条件。
public class Main{

    public static void main(String [] args){
        // 方法调用
        a();
    }
    public static void a(){
        // 自己调自己
        a();
    }
    
    // 该程序会出现一个非常严重的问题、由于main方法中调用了a方法 而在a方法的方法体中又调用了a方法 方法一个一个被调用但是哪个方法都还没有结束 所以使用递归必须要定义递归体和递归头 没有递归体和递归头、那么递归程序会无法得到控制
}

public class Main{

    public static void main(String [] args){
        a();
    }
	// 计数器
    static int count = 0;
    
    public static void a(){
        count++;
        // 定义递归头 所谓的递归头就是限制递归的条件
        if(count<10){
        	// 递归体
            System.out.println("递归第"+count+"次");
            a();
        }else{
        // 达到递归头的限制则停止递归
            System.out.println("递归程序的计数器已经达到"+count+"次了,递归关闭");
        }
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_38858343/article/details/83448763