方法

方法就是java语言中的一种机制,就是一段代码片段,并且这段代码片段可以完成某个特定的功能,并且可以被重复的使用。

方法,对应的英语单词:Method

方法在c语言中叫做函数/Function

使用方法我们成为“调用/invoke”

方法定义在类体当中,在一个类当中可以定义多个方法,方法编写的位置没有先后顺序,可以随意。

方法体中不能在定义方法

方法体由java语句构成,方法体当中的代码遵守自上而下的顺序依次执行。

方法怎么定义,语法结构
  • [修饰符列表] 返回值类型 方法名(形式参数列表){
  • 方法体;
  • }
2.对以上的语法结构进行解释说明
  • 可选项,不是必须的
  • 目前统一写成 public static
  • 方法的修饰符列表当中有static关键字的话,怎么调用这个方法?
  • 类名.方法名(实际参数列表);

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


返回值类型?
  • 返回值是一个具体存在的数据,数据都是有类型的,此处需要指定的是返回值的具体类型。
  • 返回值类型都可以指定那些类型?
  • java任意一种类型都可以,包括基本数据类型和所有的引用数据类型
  • 也可能这个方法执行结束之后不返回任何数据,java中规定,当一个方法执行结束之后不返回任何数据的话,返回值类型位置必须编写:void关键字。


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

2.4形式参数列表:简称形参
  • 形参是局部变量:int a;double b; float c; String s;…
  • 形参的个数可以是:0-N个
  • 多个形参之间用”逗号“隔开
  • 形参中起决定性作用的是形参的数据类型,形参的名字就是局部变量的名字。
  • 方法在调用的时候,实际给这个方法传递的真实数据被称为:实际参数,简称实参。


2.5方法体必须由大括号括起来,方法体当中的代码有顺序,遵循自上而下的顺序依次执行。并且方法体由java语句构成,每一个java语句以”:“结尾


3、方法怎么调用?、
  • 方法只定义不去调用时不会执行的,只有在调用的时候才会执行。
  • 语法规则:方法的修饰符列表当中有static
  • 类名.方法名(实参列表);这是一条java语句,表示调用某个类的某个方法,传递这样的实参。
深入return语句

带有return关键字的java语句只要执行,所在的方法执行结束。

在”同一个作用域“当中,return语句下面不能编写任何代码,因为这些代码永远都执行不到,所以编译报错。

方法在执行过程当中,在JVM中的内存是如何分配的,内存如何变化?

1、方法只定义,不调用,是不会执行的,并且在JVM中也不会给该方法分配”运行所属“的内存空间。

只有在调用这个方法的时候,才会动态的给这个方法分配所属的内存空间。

2、在JVM内存划分上有这样三块主要的内存空间

方法区内存

堆内存

栈内存

3、关于栈数据结构

栈:stack,是一种数据结构

数据结构反应的是数据的存储形态。

数据结构是独立的学科,不属于任何编程语言的范畴,只不过在大多数编程语言当中要使用数据结构。

作为程序员需要提前精通:数据结构+算法

常见的数据结构:

数组 队列 栈 链表 二叉树 哈希表/散列表。。。。

java方法体是什么 java 方法体_开发语言

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

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

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

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

压栈:给方法分配内存

弹栈:释放该方法的内存空间

6、局部变量在”方法体“中声明,局部变量运行阶段在栈中分配。