2021-01-23

一个新手的初识Java之旅(3)

关于方法

方法是指对处理数据的语句的组合,使这个组合能对某一类数据产生想要的效果,就类似于数学的公式一样。要注意的一点是方法的功能要尽可能的单一。这样不仅方法的设计会变得简单,用户也容易使用。比如数学中的符号都用一个符号代替会怎样?人们还能轻易的分清符号的作用吗?在手机里也是有许多功能不同的软件。一个软件就包括了手机所有的功能,有人见到过吗?

关于栈

栈是新学到概念。这个感觉还挺容易理解的。就是先进后出,后进先出。栈只有一个入口,可以理解为一个死胡同。这个栈是有边界的,毕竟内存有限。以数组为例,存放数据时是从0开始到n,这是压栈,数据取出时就是从n开始到0,这是弹栈。
在jvm中有内存空间,主要是栈内存空间,方法区内存空间,堆内存空间。堆空间先不谈。栈空间就是采用栈的操作。但方法区内存空间并不是采用方法的操作。方法区内存空间是用来存放代码块和常量、静态(被static修饰)的数据。那么我们是否有这样一个疑惑?我们下的那些软件全部在方法区吗?在老师的解释后我对平时软件的打开运行有了更直观的感受。一个的程序的运行有编译处理和运行两个步骤,那么源文件和编译后的文件在哪呢?在硬盘中。在生活中,我们要使用这个软件时,就是双击图标。这时硬盘中的代码就加载在内存中并运行。内存再将这些数据传到寄存器,寄存器在传到CPU。那为什么不直接在硬盘中取呢?因为内存有限,而硬盘很大,存取速度很慢。内存的存取速度更快,寄存器存取速度非常快,但寄存器很小。
在这里插入图片描述
(图画的不好)在这图上Fun()是一个求阶乘的方法。在main方法中在执行到Fun(n)这里时,(图中有箭头)栈就加载了Fun()方法,一路加载下去,到Fun(2)这里时,返回了结果2,此时这个方法Fun(2)就被清除了,一路清下来,最后就返回了阶乘的结果。这就是先进后出,后进先出。但递归一不小心就会栈内存空间溢出。所以使用时要多加小心。
以上的内容是我的今天的大概总结啦,如有错误请谅解,也欢迎指正。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值