2021年4月24日星期六

008-Java中方法的使用(进阶篇)


目录
  • 一、方法的重载(overload)
    • 一、什么是方法的重载
  • 二、方法执行时的内存变化
    • 一、JVM主要三块内存空间
    • 二、关于栈的数据结构(如图)
    • 三、方法执行过程内存变化(用以下代码演示)
  • 三、方法的递归
    • 一、递归的使用及其内存图
    • 二、递归的注意事项

一、方法的重载(overload)


一、什么是方法的重载

  • 在同一个类中
  • 方法名相同
  • 参数列表不同
    • 参数个数不同算不同
    • 参数类型不同算不同
    • 参数顺序不同算不同

 只要同时满足上面三个条件,那么我们就可以认定方法之间发生了重载机制,注:
  方法重载和方法的返回值类型无关
  方法重载和方法的修饰符列表无关



二、方法执行时的内存变化


一、JVM主要三块内存空间

  • 方法区:最先有数据,存放代码片段,存放class字节码文件;
  • 堆内存:这里先卖个关子,后面博客会补上的;
  • 栈内存:方法调用的时候,该方法需要的内存空间在栈中分配,方法不调用时是不会在栈中分配空间的;

 注:这只是主要三块内存空间,除了这三块还有其他的。

二、关于栈的数据结构(如图)

 由于方法调用时所需要的内存空间在栈中分配,因此这里需要简单的了解一下栈的数据结构;

 数据结构是存储数据的容器,而该容器在存储数据时存在着不同的结构,栈就是其中一种结构:

  • 栈存储数据的特点:先进后出,后进先出;
  • 栈存储的是方法运行过程中需要的内存,以及栈中会存储方法的局部变量;
  • 方法只有在调用的时候才会在栈中分配内存,此时成为:压栈;
  • 方法在执行结束之后,该方法所需要的空间就会释放,此时称为:弹栈;

在这里插入图片描述


三、方法执行过程内存变化(用以下代码演示)

  1. 代码图

在这里插入图片描述


2. 运行结果

在这里插入图片描述


3. 内存变化图

在这里插入图片描述



三、方法的递归


一、递归的使用及其内存图

  1. 代码图

在这里插入图片描述


2. 内存变化图(这里只画出栈内存)

在这里插入图片描述


二、递归的注意事项

  • 当递归时候程序没有结束条件,一定会发生:栈内存溢出错误:Stack OverflowError,因此,递归必须要有结束条件;
  • 递归假设是有结束条件时,假设这个结束条件是对的,是合法的,递归有的时候也会出现栈内存溢出错误,因为有可能递归的太深,栈内存不够了。因为一直在压栈;
  • 在实际中,不建议轻易的选择递归,能用for循环while循环代替的,尽量使用循环来做。因为循环的效率高,耗费的内存少。递归耗费的内存比较大,另外递归的使用不当,会导致JVM死掉;




相关链接:

链接: 007-Java中方法的使用(基础篇).
链接: 006-Java的访问权限控制符和包导入机制.
链接: 005-Java中的控制语句.









原文转载:http://www.shaoqun.com/a/704734.html

跨境电商:https://www.ikjzd.com/

孙琦:https://www.ikjzd.com/w/1638

review:https://www.ikjzd.com/w/2735


目录一、方法的重载(overload)一、什么是方法的重载二、方法执行时的内存变化一、JVM主要三块内存空间二、关于栈的数据结构(如图)三、方法执行过程内存变化(用以下代码演示)三、方法的递归一、递归的使用及其内存图二、递归的注意事项一、方法的重载(overload)一、什么是方法的重载在同一个类中方法名相同参数列表不同参数个数不同算不同参数类型不同算不同参数顺序不同算不同 只要同时满足上面三个条
沃尔玛:https://www.ikjzd.com/w/220
敦煌网站:https://www.ikjzd.com/w/189
amazon go:https://www.ikjzd.com/w/67
跟姐姐在家干坏事 姐姐叫我满足她:http://www.30bags.com/m/a/255025.html
没想到!亚马逊卖家转行做服务商,赚了....:https://www.ikjzd.com/home/112676
注意!美国邮政宣布对中国邮政小包实行全面涨价!:https://www.ikjzd.com/home/14829

没有评论:

发表评论