Day01_11_Java方法

Java - 方法

什么是java中的方法?

  - 方法就是一段代码片段,并且这段代码可以完成某个特定的功能、动作、是可以被重复的使用。
  
  - 方法就是类的一个动作。

  - 方法在C语言中也叫做函数 或 function。

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

  - 方法体当中不能再定义方法。

方法的语法结构

-[修饰符列表]  返回值类型  方法名 (形式参数列表){
        
            方法体;
  }
  public  int  sumInt (int a,int b) {
 	
 	int c=a+b;

 	return c;
 }


## 调用方法


- 静态方法(static修饰)  类名.方法名(实参列表1,2);  

- sum = sumInt (a , b);

- 当两个方法在同一个类体中时, “类体.”  可以省略不写。 

- return 出现在返回值为void 的方法当中,主要是为了用来结束当前方法。

- 非静态方法必须new对象之后才能调用

## 实例


class MethodTest {
 public static void main(String[] args){

    // 调用静态方法
     int a=3,b=10,c,d;
     c=ScannerTest.minus(a,b);

     //调用非静态方法
     ScannerTest st=new ScannerTest();
     d=st.sumInt(a,b);

     //输出调用结果
     System.out.println("静态方法调用结果:"+c);
     System.out.println("非静态方法调用结果:"+d);
 }

 //静态方法
 public static int minus(int a,int b){
     int c;
     c=a-b;
     return c;
 }

 //非静态方法
 public int sumInt(int a,int b){
     int c;
     c=a+b;
     return c;
 }
}



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

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

2. jvm在内存划分上分成这样三块主要的内存空间

   * 方法区内存

   * 堆内存

   * 栈内存

## 关于栈的数据结构

  * 栈:stack,是一种数据结构

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

  * 栈帧永远指向栈顶元素,栈顶元素处于活跃状态,其他元素静止。

  * 压栈/入栈/push,  弹栈/出栈/pop

  * 压栈:给方法分配内存空间,  弹栈:释放该方法的内存空间。

  * 栈数据结构存储数据的特点是,先进后出,后进先出。

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

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

  * 方法区内存中只有一份代码片段,但是可以被重复调用,但是每一次调用这个方法的时候,都需要重新分配独立的运行空间此空间需要在栈内存中分配,栈内存中分配方法运行所属的内存空间。

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

  * 局部变量在方法体中声明,代码片段存储在方法区内存中,在栈中分配内存空间。  

posted @ 2021-03-23 13:03  失昼  阅读(39)  评论(0)    收藏  举报