目录
一、什么是方法?
相当于C语言当中的函数,在开发过程当中我们会把需要重复使用的某个部分的代码组织起来,模块化,需要的时候直接调用即可不需要重复的去书写。
public class test_20230626 {
public static int add(int a ,int b){
return a + b;
}
public static void main(String[] args) {
add(10,20)
}
}
比如,如上图我们所写的add(实现两个数相加的功能)方法,在main方法当中以后我们可能很多地方都要用到add方法,如果没有方法这种模块性的去组织代码,就需要写很多重复的代码降低了开发效率。
二、如何定义方法
1、方法的定义
[public] [static] 返回值 方法名 (形式参数列表~~~){
方法体代码;
[renturn 返回值];
}
其中红色部分(修饰符)可以根据不同的开发需求进行省略(类和对象里会详细介绍)
2、注意事项
(1)返回值:返回值类型必须与实体返回值相同,没有返回值的时候必须写void,不是所有的方法都需要返回。
(2)方法名字:采用小驼峰命名(第一个单词以小写字母开始,后面每个单词首字母大写)
(3)参数列表:有参数的每个参数之间逗号隔开,没有参数的不写
(4)方法写在类当中,方法不能嵌套定义,但可以嵌套使用,与c语言不同没有方法声明一说
(5)与c语言不同,方法不需要一定写在main函数前面,也可以写在main函数后JAVA当中没有硬性规定。
(6)当方法执行过程当中一旦遇到return那么方法就结束了,意味着方法在栈上开辟的空间被回收。
(7)类中有方法,方法中有局部变形量(必须按照这种嵌套去写)。
三、实参和形参的关系
1、什么是实参,什么是形参
2、形参和实参之间的关系
一句话:在JAVA当中,实参的值永远都是赋值到形参当中,形参和实参本质是两个实体
3、传引用类型的参数
(1)一个问题:两个数字为什么没有交换
public class test_20230626 {
public static void swap(int x ,int y){
int temp = x;
x = y;
y = temp;
System.out.println("swap:" + "x = " + x + "y = " + y);
}
public static void main(String[] args) {
// 交换a和b
int a = 10;
int b = 20;
swap(a,b);
System.out.println("main:" + "a = " + a + "b = " + b);
}
}
运行结果:
可以看到,在swap函数交换以后,形参x和y的值发生了变换,但是main方法当中a和b还是交换前的值,没有交换成功。
(2)原因分析:
main方法当中调用swap方法以后,main方法和swap方法会在栈上开辟不同的空间,而swap方法只是将main方法当中的a和b拷贝了一份到x和y当中,他们在不同的空间当中运行,实参a和b和形参x和y是没有任何关联性的两个变量,所以对形参x和y进行操作不会给实参a和吧造成任何的影响。
(3)解决方法
让形参和实参产生关联,即就是传引用类型参数数组(可以理解为数组名其实就是一个引用)
public class test_20230626 {
public static void swap(int[] arr1){
int temp = arr1[0];
arr1[0] = arr1[1];
arr1[1] = temp;
System.out.println("swap:" + "arr1[0] = " + arr1[0] + " " + "arr1[1] = " + arr1[1]);
}
public static void main(String[] args) {
// 交换a和b
int[] arr = {10,20};
swap(arr);
}
}
运行结果:
原因分析:
1、首先大致介绍一下什么叫做引用类型变量,说到引用类型我们就不得不提基本类型变量。基本数据类型创建的变量,称为基本变量,该变量空间(栈上)中直接存放的是其所对应的值,int a = 10 会在栈上开辟一块空间吧 10这个数据放进去,引用数据类型创建的变量,一般称为对象的引用,其空间(栈上)中所存储的是对象所在空间的地址。
2、一张图说明什么是对象什么是引用(以数组为例):
3、传数组可以进行数据交换的原因
四、方法的重载
1、为什么需要方法的重载
先看一段代码:
public class test_20230626 {
public static int add(int a ,int b){
return a + b;
}
public static void main(String[] args) {
System.out.println(add(10,20););
System.out.println(add(12.5,12.5));
}
}
运行结果:
分析:
所设计的add的方法只能进行整数和整数的相加,但是在实际的应用场景当中我们可能会进行小数和小数之间的相加,那么这个时候add函数就不适用了,因为实参是double类型而形参是int类型不匹配,为了解决这个问题一个比较简单粗暴的办法就是重新写一个方法用来计算double类型的数据相加,但是我们还可能计算int类型和double类型数据相加,当然就还有其余的类型,所以一味地写方法会造成程序的繁琐,并且起方法名本来就是一个比较令人头疼的问题,因此JAVA引进了方法的重载。
2、方法重载的概念
在JAVA当中,如果多个方法名字相同,参数列表不同,则称该几种方法被重载了。
方法重载:方法实现的基本功能是相同的,不然没有必要定义相同的名字,但是参数不同,JAVA方法名可以一样,当输入方法名根据参数列表不同会有不同的选择。
注意事项:
(1)方法名必须相同
(2)参数列表不同
(3)返回值不影响重载