2.1 类的定义及使用
方法可以提高代码的复用性,方法定义在类体当中。
方法如何定义?
方法的语法结构:[修饰符列表] 返回值类型 方法名(形式参数列表){
方法体;
};
关于修饰符列表:
为可选项,不是必须的
目前统一写为 public static
方法的修饰符列表当中与static如何调用?类名.方法名(实际参数类列表);
方法名:
方法名最好见名知义,方法名首字母小写之后的字母开头大写
形式参数列表
形参事局部变量
多个形参之间用逗号隔开
实参列表与形参列表必须满足:个数相同,对应的参数类型相同
方法在执行过程中内存是如何分配的?
public class Test{
public static void main(String[] args){
}
public static void sunMethod(int x, int y){
System.out.println(y+x);
}
}
1.方法只定义不调用是不会执行的,并且在JVM中也不会给改方法分配运行所属的内存空间
2. 在JVM内存划分上有这样三块主要内存空间:
方法去内存
堆内存
栈内存
3.关于数据结构:
栈:是一种数据结构
栈帧永远指向栈顶元素
栈顶元素处于活跃状态,其他元素静止
栈数据存储特点:先进后出,后进先出
4. 方法代码片段属于.class字节码文件,字节码文件在类加载的时候将其放在了方法去内存中。所以JVM中的三块主要的内存空间中方法去内存最先有数据。存放子代码片段。代码片段虽然在方法区内存当中只有一份但是可以被重复调用。每一次调用这个方法的时候,需要给改方法分配独立的活动内存(栈中)。
5. 栈内存中分配的方法运行所属的内存空间,压栈给方法分配内存,弹栈是释放内存。
6. 局部变量在方法区声明,在栈内被释放。
public class MethodTest{
public static void main(String[] args){
int a = 10;
int b = 20;
int retValue = sumInt(a,b);
System.out.println("rectvalue="+ rectvalue);
}
public static int sumint(int i, int j){
int result = i+j;
int num = 3;
int rectValue = divide(result,num);
return rectValue;
}
public static int divide(int x ,int y){
int z = x/y;
return x;
}
}
运行时在栈内存内分配用以运行在栈中,哪个方法先被执行哪个先压入栈,最后调用的哪个方法一定是最先结束的。