一、对象的行为

JVM在运行期间,划分为5个区域:栈,堆,元空间,PC寄存器,本地方法栈

1、栈 - 方法调用栈

栈是一种数据结构,它是一种FILO结构(先进后出)
栈中存在方法的调用关系,假如main()方法调用了turnOn()方法,然后turnOn()方法又调用了setVolume()方法,最后setVolume()方法又调用println()方法。
因为println()方法是在调用栈的顶部,那么控制流程现在就在println()方法中。setVolumn()方法等待println()完成,turnOn()方法等待setVolume()完成,沿着调用栈向下依此类推
过程:
1、压栈
压栈.png
2、出栈
当每个方法,执行完毕将从栈的最上方移除。正在执行的方法,永远在栈的最上方。

二、方法的调用

方法在执行时,可能有3种情况:
1、正常执行,并返回一个结果

  1. /**
  2. * 有返回结果的方法
  3. * @param a
  4. * @param b
  5. * @return
  6. */
  7. public int add(int a,int b) {
  8. return a + b;
  9. }

2、正常执行,不返回任何结果

  1. /**
  2. * 无返回结果的方法
  3. * 打开收音机
  4. */
  5. public void turnOn() {
  6. setVolume(50);
  7. }

3、方法抛出异常

三、方法的定义

Java 程序是以类为单位组织自己的代码,所以任何代码都需要写在类中,包括:方法
方法:对象的行为 或者 类的行为
格式:
方法:访问修饰符 可选修饰符 返回值类型 方法名(形式参数) 抛出的异常{}
访问修饰符:public protected 默认 private
可选修饰符:static final abstract native synchronized
返回值类型: void 代表没有返回 其他的,都代表有返回
方法名:自己定义
形参列表:方法中需要使用到的参数

四、按值传递

当实际参数传递给形式参数时,实际参数的数据被复制给形式参数。在编程中,在方法调用之间复制数据的过程称为按值调用。

注:Java中只有值传递

五、方法的重载

Java中允许方法被重载。当一个类有两到多个同名但是有不同参数列表的方法时,就是方法重载。
相同的行为,可能有不同的实现:
相同的方法,根据不同的参数(类型,个数,顺序)来进行区分

  1. public class Person {
  2. public void goHome() {
  3. System.out.println("使用11路公交车回家!!!");
  4. }
  5. public void goHome(Bike bike) {
  6. System.out.println("骑车回家!!!");
  7. }
  8. public void goHome(Car car) {
  9. System.out.println("开车回家!!!");
  10. }
  11. public void goHome(Bike bike,Car car) {
  12. System.out.println("先骑车,再开车回家!!!");
  13. }
  14. public void goHome(Car car,Bike bike) {
  15. System.out.println("先开车 ,后骑车!!!");
  16. }
  17. public static void main(String[] args) {
  18. Person person = new Person();
  19. person.goHome();
  20. }
  21. }