调用一个方法时的流程

方法: 什么是方法
方法,就是实现某个功能的代码块
方法的作用:
简化自己的代码,当我们定义与调用某一个功能时,如果不使用方法,那我们每次调用该功能,都需要输入该功能对应的大量代码 。
所以,我们将一个功能,封装在一个方法里,当我们需要用到这个功能时,就调用这个方法,这样就能简化我们的代码 。
方法的形式:
访问权限修饰符 返回值类型 方法名字(参数类型 参数1,参数2,…){
? 方法体
?//返回值
}
例如主方法:
public static void main(String[] args){方法体//return XXX;//返回值,如果上面是void这里就不要return}
注意:
方法名字,除了主方法,是可以随意命名的
返回值的类型是什么,返回值类型的名称就是什么:
例如我们没有返回值,返回值类型就是void
? 我们返回值为整数形式,返回值类型就可以用int
? ··········
方法的参数:
方法调用时,我们在定义方法时,定义了几个参数,调用时,就要传入几个参数
定义时传入的参数,叫做形式参数,形参(声明该方法被调用时,需要传入一种什么样的参数:包括类型,个数,顺序)
调用时传入的参数,叫做实际参数,实参,实参一定要按照形参定义的类型,个数,顺序来传入

调用一个方法时的流程

文章插图
即形参实参需要一一对应
调用一个方法时的流程:
1.加载class文件
2.调用主方法(主方法在栈内存中开辟空间)
3.在主方法中,用类名.方法名,调用sum方法,传入参数
4.sum方法被调用,开始执行(在栈内存中开辟空间)
5.sum方法中,对传入的参数进行操作
6.并得到一个结果,返回该结果
7.主方法中定义一个变量,接收sum方法得到的结果
8.打印得到的结果
注意:
若一个方法是被修饰的静态方法,该方法在某个类中定义,同时在该类中调用,那么可以直接用方法名去调用,等同于 类名.方法名
方法必须定义在类中,不能定义在方法中
方法的可变参数:
在方法的定义阶段,传入形参时,如下列形式定义形参:
static void add(double cutoff,int... arr){}
其中 int… arr[] 就是可变参数
可变参数本质就是一个语法糖==>用来方便程序员的
如上面那个代码,我们在传入实参时,就可以传入任意个数的参数了:
add(0.9,1,2,3,4,5.......)
运用实例:
public class Demo {public static void main(String[] args) {//此处传入可变参数int[] arr = times(0.5,2,4,6,8);//结果为 [1,2,3,4]System.out.println(Arrays.toString(arr)); }//此处定义可变参数public static int[] times(double cutoff,int...arr) {for (int i = 0; i < arr.length; i++) {arr[i] = (int) (arr[i] * cutoff);}return arr;}}
方法的重载:
观察下列代码:
【调用一个方法时的流程】static void add(int a,int b){}static void add(double a,int b){}static void add(int a,double b){}static void add(double a,double b){}static void add(int a,int b,int c){}
这种代码是可行的,为什么?
这就是方法的重载:
? 在同一个类中,允许存在同名方法,前提是他们的 参数列表:参数个数,参数顺序,参数类型 至少有一个存在区别 ==>即:两同一不同