1什么是方法
个人学习对方法的理解为:将一些代码打包起来设立一个标签,然后在后续代码中如果需要使用这些代码,直接通过之前设立的标签,来直接调用那些代码,而不需要重复再写一遍,即 方法。
2方法的语法结构
//方法定义
修饰符 返回值类型 方法名称([参数类型 形参 ...]){
方法体代码;
[return 返回值];
}
注意事项:
1. 修饰符:现阶段直接使用public static 固定搭配
2. 返回值类型:如果方法有返回值,返回值类型必须要与返回的实体类型一致,如果没有返回值,必须写成 void
3. 方法名字:采用小驼峰命名
4. 参数列表:如果方法没有参数,()中什么都不写,如果有参数,需指定参数类型,多个参数之间使用逗号隔开
5. 方法体:方法内部要执行的语句
6. 在java当中,方法必须写在类当中
7. 在java当中,方法不能嵌套定义
8. 在java当中,没有方法声明一说
在定义方法时参数为形参,而在调用方法时设置的参数为实参。
如下图
方法的调用过程:调用方法--->传递参数(实参将自身的值拷贝一份给形参)--->找到方法地址--->执行被调方法的方法体--->被调方法结束返回--->回到主调方法继续往下 执行
特别的,方法的执行和调用过程,使用的是操作系统的方法栈,每个方法的调用,对应一个栈帧,方法的形参和实参处于不同的栈帧中,因此形参的数据并不会对实参造成影响
上图代码中的fu方法和main实参在调用时如下图 所示:
从上图可以看出,方法栈是先进后出的结构。
简单介绍方法重载(overload)
方法重载:同一个类中,定义了若干个方法名称相同,但参数列表不同(参数得类型或个数不同),与返回值无关的一组方法,叫重载方法。
个人的理解为,这个方法重载中的重字是多重的意思,实际意思为多重加载的方法,相当于一个大方法包里包含了很多小方法。当调用该大方法包时,编译器会自动根据形参里接受的实参数值的类型来判断究竟调用大方法包中哪一个小方法。与返回值无关的意思是,无论这个大方法包内的各个小方法返回的类型是什么样的,不影响重载方法的判定,下图中就是返回值不同的例子,返回值分别为 int double long,返回值相同的话就可以都是int,只要符合上面的定义就是重载方法。
例如上图中,add方法名称相同,参数类型不同(分别为int double long)(此处也可以数量不同,比如可以改为int x int y int w,数量就变成3个了)。
可以理解为一个add大方法包,在main中调用时,根据使用的数据类型,绿框中第一行调用红框第一行,绿框第二行调用红框第二行,绿框第三行调用红框第三行。