Java学习流程-方法

151 阅读4分钟

1.方法:

    在程序中封装特殊功能的代码块
    好处:
        1.提高代码的复用性,从而提高开发效率
        2.降低代码的耦合性
            耦合性:在程序中代码片段与代码片段之间的关联性,关联性越大,耦合性越大,程序越不好
     特点:
         1.方法的核心特点:不调用不执行
         2.方法调用过程中核心动作:传递参数和返回结果
             传递参数:
                 背景:自定义方法无法直接使用调用者方法中数据
                 含义:调用者方法向自定义方法进行参数传递的过程(调用者方法===>自定义方法)
                 特点:将调用者方法中的数据值或地址值传递给自定义方法
                 参数:
                     形式参数:声明方法时()中的参数,简称"形参",是变量的声明格式
                     实际参数:调用方法时()中的参数,简称"实参",是具体的数据值或地址值
             返回结果:
                 背景:调用者方法无法直接使用自定义方法中的数据
                 含义:自定义方法向调用者方法返回结果的过程(自定义方法===>调用者方法)
         3.方法声明的位置,在类中代码块外
         4.调用方法时必须做到数据的类型和个数一一对应

方法声明的格式:

      修饰符 返回类型 方法名(形参类型1 形参名1,形参类型2 形参名2 ……){
          方法体语句;
          return 返回值;
      }
      解释:
          修饰符:暂不讲解
          返回类型:返回值的数据类型
          方法名:方法的名字,见名知意
          ():形参列表
          方法体语句:抽取以前写在main方法中的代码片段
          return:控制语句;
                 (1)结束方法
                 (2)如果后面有返回值,在结束方法的同时将返回值返回给调用方法
          返回值:方法的结果数据
          

声明方法前两个明确:

     返回值类型:
         明确方法结果数据的数据类型
     形参列表:
         明确自定义方法所需参数个数及其数据类型
         

方法的调用

 调用同一个类的方法:
     单独调用(直接调用)
         方法名(实参);
     输出调用(打印调用)
         System.out.println(方法名(实参));
     赋值调用
         数据类型 变量名= 方法名(实参);

void关键字

    方法没有返回值
    作用:当方法没有返回值的时候,返回值类型的位置也不能空着,需要使用void关键字进行占位
    注意:1.当返回值类型为void时,调用方式只能使用单独调用
         2.当方法的返回值类型不是void时,调用方式推荐使用赋值调用
         3.当方法的返回值类型为void时,方法中方法体最后的return可以不写
         

方法的重载

    在同一个类中(或者子父类继承关系中),出现了方法名相同,形参列表不同的现象
    
    前提条件:
        1.必须在同一个类中
        2.方法名必须相同
        3.参数列表必须不同(至少要满足以下一种)
            1)形参的数量不同
            2)形参的数据类型不同
            3)形参的数据类型顺序不同
            
    注意事项:调用重载的方法,具体执行哪一个,需要根据实参的数据类型和个数进行匹配
    

方法的递归

    方法自身调用该自身的现象
    分类:
        直接递归
            例如:在a方法中调用a方法
        间接递归:
            例如:在a方法中调用b方法,在b方法中调用c方法,在c方法中调用a方法
    注意:
        1.方法的递归在某种程度上可以理解为循环
        2.在使用递归的时候,需要给递归添加限定条件,防止"栈内存溢出"
        3.即使给递归增加限定条件,也不能让递归层数太多,否则会发生"栈内存溢出"
    好处:
        在某些特定的场景中,无法使用whilefor循环进行遍历,可以使用递归轻松解决这一问题
        例如:多层文件夹的遍历
    弊端:1.可能会发生栈内存溢出
        2.递归会导致方法调用次数增多,方法调用次数越多,程序执行效率越低