方法的语法结构?方法的调用?方法在运行时的内存分配?

方法

***本质:
**一段代码片段,并且这段代码片段可以完成某个特定的功能,并且能重复使用。

*方法定义在类体当中,方法体之外。

*一个类中可以定义多个方法,位置先后可以随意。

***语法结构:**
[修饰符列表] 返回值类型 方法名 (形式参数列表){
	方法体;
}

*对以上语法结构的解释说明:

**关于修饰符列表
可选项,不是必须的
需要注意:
若方法修饰符列表中有“static关键字”的话,以【类名.方法名(实际参数列表)】的形式调用此方法

**返回值类型
*返回值:
一个方法是可以完成某个特定功能的,这个功能结束之后大多数是需要返回最终执行结果的,执行结果可能是一个具体存在的数据。而这个具体存在的数据就是返回值

*返回值类型:
返回值是一个具体存在的数据,数据都是有类型的,此处需要指定的是返回值的具体类型。

*返回值的类型可以是Java中任意一种类型,包括基本数据类型和所有的引用数据类型。 例如byte, short, int, float, double, boolean, char, String, void …

*也可能方法执行结束后不返回任何数据,Java中规定,当一个方法执行结束之后不返回任何数据的话,返回值类型位置必须写void关键字。
注意:
此时不可以在方法体中编写“return 值”这样的语句,但是可以写“return;”

**方法名
*只要是合法的标识符就好
*最好见名知意
*方法名最好是动词
*方法名首字母要求小写,后面每个单词首字母大写

**形式参数列表:简称形参
*形参是局部变量
*形参的个数可以是0-N个
*多个形参之间用逗号隔开
*方法在调用的时候,实际给这个方法传递的真是数据被称为:实际参数,简称实参
*实参列表和形参列表必须满足:
-数量相同
-类型对应相同

**方法体
*必须由大括号括起来,Java语句遵循自上而下的顺序依次执行。

*方法的调用

***语法规则****
		类名.方法名(实参列表)

**以下情况类名可以省略:

  • -对于方法中的修饰符列表当中有static关键字的:“类名.”可以省略不写
  • -m1方法和m2方法在同一个类体当中的时候可以省略不写

**方法调用的时候实参和形参要求个数对应相同,数据类型对应相同。类型不同的时候要求能够进行相应的自动类型转换。

*注意:在一个Java源文件当中只定义一个class,比较清晰。

*方法执行过程中的内存分配

**方法只定义,不调用,是不会执行的,并且在JVM(Java虚拟机)中也不会给该方法分配“运行所属”的内存空间,只有在调用这个方法的时候,才会动态的给这个方法分配所属的内存空间。

**在JVM内存划分上有这样三块主要的内存空间(当然除了这三块之外还有其他内存空间)

  • -方法区内存:

    在类加载的时候,class字节码代码片段被加载到该内存空间。

  • -堆内存:

    new的对象在堆内存中存储

  • -栈内存(局部变量):

    方法代码片段执行的时候,会给该方法分配内存空间,在栈内存中压栈。

**方法代码片段存在哪里?方法执行的时候执行过程的内存在哪里分配?

*方法代码片段属于.class字节码文件的一部分,字节码文件在类加载的时候,将其放到了方法区中,所有JVM中的三块主要的内存空间中方法区内存最先有数据,存放了代码片段。

*代码片段虽然在方法区内存当中只有一份,但是可以被重复调用。每次调用这个方法的时候,需要给该方法分配独立的活动场所,在栈内存中分配【栈内存中分配方法运行的所属内存空间】

*方法在调用的瞬间,会给该方法分配内存空间,会在栈中发生压栈动作,方法执行结束之后,给该方法分配的内存空间全部释放,此时发生弹栈动作。

  • -压栈:给方法分配内存
  • -弹栈:释放该方法的内存空间
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值