一、对象的行为
JVM在运行期间,划分为5个区域:栈,堆,元空间,PC寄存器,本地方法栈
1、栈 - 方法调用栈
栈是一种数据结构,它是一种FILO结构(先进后出)
栈中存在方法的调用关系,假如main()方法调用了turnOn()方法,然后turnOn()方法又调用了setVolume()方法,最后setVolume()方法又调用println()方法。
因为println()方法是在调用栈的顶部,那么控制流程现在就在println()方法中。setVolumn()方法等待println()完成,turnOn()方法等待setVolume()完成,沿着调用栈向下依此类推
过程:
1、压栈
2、出栈
当每个方法,执行完毕将从栈的最上方移除。正在执行的方法,永远在栈的最上方。
二、方法的调用
方法在执行时,可能有3种情况:
1、正常执行,并返回一个结果
/**
* 有返回结果的方法
* @param a
* @param b
* @return
*/
public int add(int a,int b) {
return a + b;
}
2、正常执行,不返回任何结果
/**
* 无返回结果的方法
* 打开收音机
*/
public void turnOn() {
setVolume(50);
}
三、方法的定义
Java 程序是以类为单位组织自己的代码,所以任何代码都需要写在类中,包括:方法
方法:对象的行为 或者 类的行为
格式:
方法:访问修饰符 可选修饰符 返回值类型 方法名(形式参数) 抛出的异常{}
访问修饰符:public protected 默认 private
可选修饰符:static final abstract native synchronized
返回值类型: void 代表没有返回 其他的,都代表有返回
方法名:自己定义
形参列表:方法中需要使用到的参数
四、按值传递
当实际参数传递给形式参数时,实际参数的数据被复制给形式参数。在编程中,在方法调用之间复制数据的过程称为按值调用。
注:Java中只有值传递
五、方法的重载
Java中允许方法被重载。当一个类有两到多个同名但是有不同参数列表的方法时,就是方法重载。
相同的行为,可能有不同的实现:
相同的方法,根据不同的参数(类型,个数,顺序)来进行区分
public class Person {
public void goHome() {
System.out.println("使用11路公交车回家!!!");
}
public void goHome(Bike bike) {
System.out.println("骑车回家!!!");
}
public void goHome(Car car) {
System.out.println("开车回家!!!");
}
public void goHome(Bike bike,Car car) {
System.out.println("先骑车,再开车回家!!!");
}
public void goHome(Car car,Bike bike) {
System.out.println("先开车 ,后骑车!!!");
}
public static void main(String[] args) {
Person person = new Person();
person.goHome();
}
}