方法
方法是一种语法结构,它可封装一段代码为一个功能,方便重复调用。提高代码复用性、开发效率,使程序逻辑更加清晰。
- 形式结构
- 执行原理
- 参数传递机制
- 方法重载
1. 形式结构
修饰符 返回值类型 方法名(形参列表){
方法体代码(实现功能目的的代码);
return 返回值;
}
- 修饰符:public、static 、private等;
- 返回值类型:int、void、boolean等,特别的,Class的构造函数不能定义返回值类型,以及返回值类型是void的方法,无返回值,最后不能return任何值,但可直接return加分号结束方法;
- 方法名:标识符,注意命名规则;
- 形参列表:可以没有,多个形参间用逗号隔开,这儿叫形参,调用方法时在括号里写的叫实参,实参与形参的类型、数目需保持一致;
- 方法体代码:嗯;
- return:定义了返回值类型,并且类型不是“void”的方法,必须return对应类型的返回值。执行return语句后会直接结束当前方法的执行。
不能定义两个及以上方法名与形参都一样的方法。
2. 执行原理
Java将虚拟机的内存划分为方法区、栈、堆、本地方法栈、寄存器5个区域。
每次调用方法,方法都会进栈执行,执行完后再弹栈出去。
不了解堆、栈的基础知识,可以看看该博文:
基础知识篇——堆内存和栈内存
@WaitFoF
执行流程:
①通过方法名找到对应方法;
②传参;
③执行方法中代码,若该部分又有方法调用,继续压栈,优先执行完栈顶方法;
④有返回值则返回。
3. 参数传递机制
Java的参数传递机制都是值传递。
-
实参是基本数据类型的变量:传递的其实是该实参存储的值的副本。
方法内改变该副本的值不会改动到原实参的值。
-
实参是引用数据类型的变量:传递的是该变量存储的地址值的副本。
地址值指向的是堆内存中一块区域, 若在方法中不改变形参的地址指向 而直接修改形参的元素, 则实参的元素也被改变。
-
实参是字面量,传递的是字面量的值。
4. 方法重载
简单的说就是创建多个
方法名相同但形参列表不同的方法,
可以对应实现不同功能。
给调用该方法名方法的用户
提供多种传参选择
以及不用记忆多个方法名的方便。
例如,创建类时,我们自己不添加任何构造器,会自动生成一个无参构造器:
public Class Dog{
private name;
public Dog(){}//无参构造器
}
这时再写个有参数的构造器就是方法重载了
public Class Dog{
private String name;
public Dog(){}//无参构造器
public Dog(String name){//有参构造器
this.name = name;
}
}
还有,我们在调用一些方法时,IDEA会提示的同一方法不同参数选项,也是因为方法重载: