0
点赞
收藏
分享

微信扫一扫

day006-方法

莞尔小迷糊 2022-03-16 阅读 25

四.方法

1.方法的引入

  • 优点
    • 实现了代码的复用
    • 代码功能模块,便于后期代码的维护和管理

2.方法的定义(main方法由虚拟机用)

  • 实现特定功能的一段代码

  • 语法:【方法的各种修饰符】返回值 方法名(参数列表){方法主体}

    • 方法的各种修饰符:public static属于方法的修饰符,目前必须加static

    • 返回值:代表了方法执行完毕之后的一个结果,该结果可以为java支持的任意类型和void(没有结果)。

    • 方法名:是一类标识符,命名规范与变量名一致

    • 参数列表:用来接收使用者提供的外部的数据,来参与内部的运算。(参数扩展了函数的功能)。

      • 参数:参与方法内部运算的数据
    • 方法体:方法的主体功能。

3.方法的参数

  • 如何定义参数

    • 形参列表:代表了形式上参与了方法内部运算的变量;

    • 语法:(数据类型 变量名1,数据类型 变量名2),变量的数量取决于需求。数据类型用来限定外部提供的数据的类型。

    • 参数列表可以为空

    • 参数的作用:

      • 接收外部数据(真正参与方法内部运算的数据)

      • 参数代表了定义的方法的需求:代表了使用方法的时候外部需要提供的数据的个数和种类。

      • 定义方法是否需要定义看需求中是否有变化的量,如果有,就定义为参数即可。

  • 传参(交换变量的值)

  • 方法的调用的语法:方法名(实参列表); 实参列表的值和个数要和形参列表的一一对应。

4.方法的返回值

  • java的返回值:
    • 定义方法的返回值的内容可以是java支持的任意类型和void
    • 如果一个方法知识实现了某个功能,不需要功能执行完毕后返回

5.方法的多种使用形式

  • 返回值为void的方法的使用方式:方法名(实参列表);
  • 返回值不是void的方法的使用方式
    • 使用变量接收方法的返回值。
    • 作为表达式的操作数使用
    • 作为方法的实参使用。
    • 直接调用。

6.方法的执行过程

  • 程序执行,一旦遇到了方法的调用,那么就跳转到方法的定义处去执行这个这个方法体,方法一旦执行完毕,会返回方法的调用处继续执行。

7.方法传参交换变量

  • 本质:形参变量分配内存并赋值的过程。
  • 方法占用的内存是一定的
  • 变量分类
    • 局部变量:方法内定义的变量
    • 成员变量方法外定义的变量
  • jvm的内存管理分类
    • 栈,是一种数据结构。数据结构:一组由【某种关系】组成的数据结构
      • 栈数据结构的特点:先入后出。first in last out(FILO)
        • 栈的构成:数据+栈顶指针(变量:记录要存放数据的位置),栈顶指针一开始指向栈底。
        • 压栈push:将数据存入栈顶指针指向的位置,指针上移,指针继续指向栈顶。
        • 出栈pop:先指针下移,指向栈顶数据,获取栈顶数据,指针继续下移
    • 栈内存:方法内的局部变量 stack
      • 方法调用的时候,回归每个方法分配一个栈帧,所有的局部变量的内存在栈帧中分配。
      • 当方法结束调用的时候,栈帧被回收。
    • 堆内存:存储对象 heap
    • 方法区内存:储存一些程序中不变的数据 method
  • 局部变量的特点
    • 当方法被调用的时候,该方法中的所有局部变量在栈内存分配内存。
    • 当方法使用完毕后,所有的局部变量都将被回收。
    • 局部变量的生命周期从方法被调用开始,到方法结束。
    • 形参都是局部变量。
    • 传参:将实参的值赋值给形参的过程。
      • 如果参数的类型是基本数据类型,那么参数的传递是值传递将实参的值赋值给形参。

8.多级调用

  • 某个方法里调用另一个方法

9.方法的重载(overload)

  • 概念:在同一个类的内部,多个方法方法名相同,方法参数列表数据类型不同,叫做方法的重载。
    • 参数列表不同
      • 数量不同
      • 类型不同
      • 顺序不同
  • 作用:方法名字相同,代表了实现的概念是一致的,参数列表不同,支持接收不同方法的类型的数据。

10.递归(recursion)

  • 概念:一个方法直接或间接的调用了自己

  • 递归应用的场景特点

    • 问题可以分解为若干个子问题
    • 子问题的解决方案和问题本身一致
    • 问题的最终解决依赖于每个子问题的解决
    • 必须有一个子问题可以直接解决
  • 递归调用特点:

    • 缺点:较为消耗栈内存,有可能造成栈内存溢出。
    • 优点:代码实现比较简单
举报

相关推荐

0 条评论