方法
1.定义
[修饰符列表] 返回值类型 方法名(形式参数列表){}
2.对上述说明
2.1关于修饰符列表
可选,非必须
现在统一:public static
如果有static,怎么调用该方法?
类名.方法名(实际参数列表);
2.2返回值类型
什么是返回值类型?
执行结果
类型:byte short int long float double boolean char String void…
返回值类型若不是void,方法结束必须返回具体数值
2.3方法名
合法标识符
见名知意 动词(方法一般表示一种动作)
首字母小写,后面每个单词首字母大写
2.4形式参数列表
局部变量:int a; double b;…
个数:0~N个
多个形式参数之间用“,”隔开
形式参数列表起决定性作用:数据类型,名字(局部变量的名字)
public staic int sum(int a , char b){
sum(10,'a');
3.调用方法
类名.方法名(); (修饰符列表有static的情况)
同类中可省略“类名”
return 终止方法 break 终止循环
方法在执行过程当中,JVM中的内存是如何分配,内存是如何变化的?
1.方法只定义,不调用,是不会执行的,在JVM中也不会给该方法分配“运行所属”的内存空间
2.JVM内存划分上有3块主要内存空间:方法去内存,堆内存,栈内存
3.栈数据结构
栈:stack,一个数据结构(反映数据存储形态)
1.栈帧永远指向栈顶元素
2.栈顶处于活跃状态,其他都是静止状态
3.术语:
压栈/入栈/push
弹栈/出栈/pop
4.栈数据结构存储数据特点:
先进后出
后进先出
类似于弹夹
4.方法代码片段存在哪里?执行时执行过程的内存在哪里分配?
方法代码片段属于.class字节码文件的一部分,字节码文件在类加载时将其放到方法区当中。JVM的三块主要的内存空间中方法区内存最先有数据,存放代码片段
代码片段虽然在方法区内存存在一份,但可重复使用
每一次调用,给该方法分配独立的活动场所在栈内存中分配
**5.**方法在调用的瞬间,给方法分配内存空间,在栈中发生压栈动作,方法执行结束之后,给该方法分配的内存空间全部释放,此时发生弹栈动作
压栈:给方法分配内存
弹栈:释放该方法的内存空间
**6.**局部变量在“方法区”中声明。局部变量在运行阶段内存在栈中分配