声明: 本文主要作为作者的复习笔记,由于作者水平有限,难免有错误和不准确之处,欢迎读者批评指正.
方法定义
- 在编程中,反复使用的代码可以封装成方法;需要调用时,直接调用方法即可,减少很多的重复代码编写;
- 方法定义在调用之前还是之后都可以;
- 方法定义时的参数称之为形参,此时不知道具体值,只知道类型;
在Java中方法的定义语法
修饰符 返回值类型 方法名称 (参数类型 形参名称){
//方法体代码
[return 返回值];
}
返回值
- 返回值类型是啥,有没有返回值,要根据实际情况来决定;
- 返回值返回给调用者来使用;
- 调用者是否需要在调用函数之后有一个结果,且这个结果是调用者所需要的;
方法调用
- 调用方法,只需要写方法名称(参数);
- 方法调用时传递的参数称之为实参,此时已经知道具体的值了;
- 调用方法时,实现了实参和形参的参数传递过程(将具体的数值传递给形参),进入方法体;
方法调用过程
调用方法—>传递参数—>找到方法地址—>执行被调方法的方法体—>被调方法结束返回—>回到主调方法继续向下执行
实参和形参的关系
- 实参和形参是两个独立的变量,实参赋值给形参只是把实参的数值拷贝一份给形参,不是把实参本身赋值给形参;
- 方法的形参是在方法声明时定义的,只知道类型,不知道具体值;
- 方法的实参是在调用方法时真正赋值给方法的具体数值;
方法的调用和执行过程,使用操作系统的"方法栈";先进后出的结构,每个方法的调用就对应一个"栈帧";方法的实参和形参是两个相互独立的实体,在不同的方法栈帧中.
方法没有返回值,定义方法时,写上void(不能省略);没有返回值的方法可以不写return语句,也可以写return提前结束方法的调用过程.
方法重载overload
- 在同一个类中,定义了若干个方法名称相同,参数列表不同(参数的类型或个数不同),与返回值无关的一组方法,这样的一组方法称之为重载方法;
- 返回值可以相同也可以不同,不影响重载方法的定义;
拓展
- 之所以Java的打印函数println(可以接收任何类型),是因为JDK已经定义好了支持各种类型的不同重载函数println;
- Java编译器在调用方法时,根据实参的类型和个数决定调用的是具体的哪个重载方法;
- 调用函数时,实参的类型小于形参类型,将实参的类型隐式提升为形参的类型;
- 编译器根据方法名称和参数列表来唯一的定位一个函数;