什么是方法
方法就是一个代码片段。 类似于 C 语言中的 “函数”,是若干语句的功能集合。
方法存在的意义:
- 是能够模块化的组织代码(当代码规模比较复杂的时候)。
- 做到代码被重复使用, 一份代码可以在多个位置使用。
- 让代码更好理解更简单。
- 直接调用现有方法开发, 不必重复造轮子。
方法定义语法:
// 方法定义
修饰符 方法返回值 方法名称([参数类型 形参 ...]){
方法体代码;
[return 返回值];
}
// 方法调用
返回值变量 = 方法名称(实参...);
参数:进入方法的数据
返回值:从方法出来的数据
修饰符:public static(现阶段写法)
返回值类型:也就是方法最终产生的数据结果是什么类型
方法名称:方法的名字,规则和变量一样,小驼峰
参数类型:进入方法的数据是什么类型
return:1.停止当前万法,2.将后面的结果数据返回值还给调用处
示例:
//定义一个两整数相加求和的方法
public static int sum(int a, int b){
int result = a + b;
return result;
}
三要素:
返回值类型:int
方法名称:sum
参数列表:int a, int b
方法的调用
//方法的三种调用方式
sum(10, 20); //单独调用
System.out.println("==============");
System.out.println(sum(10, 20)); //打印调用
System.out.println("==============");
int num = sum(20, 30); //赋值调用
System.out.println(num);
注意事项:
- 方法定义时, 参数可以没有. 每个参数要指定类型.
- 方法定义时, 返回值也可以没有, 如果没有返回值, 则返回值类型应写成 void.
- 方法定义时的参数称为 “形参”, 方法调用时的参数称为 “实参”.
- 方法的定义必须在类之中, 代码书写在调用位置的上方或者下方均可.
- Java 中没有 “函数声明” 这样的概念.
方法调用的执行过程
基本过程
- 定义方法的时候, 不会执行方法的代码. 只有调用的时候才会执行.
- 当方法被调用的时候, 会将实参赋值给形参.
- 参数传递完毕后,就会执行到方法体代码.
- 当方法执行完毕之后(遇到 return 语句), 就执行完毕, 回到方法调用位置继续往下执行.
- 一个方法可以被多次调用.
实参和形参
代码示例:
//交换两个整型变量
public class Change {
public static void main(String[] args) {
int a = 10;
int b = 20;
swap(a, b);
System.out.println("a = " + a + " b = " + b);
}
public static void swap(int x, int y) {
int tmp = x; //定义一个变量作为中转,来进行x,y的交换
x = y;
y = tmp;
}
}
执行结果:
可以看到a,b变量并没有交换。
原因分析:
对于基础类型来说, 形参相当于实参的拷贝. 即传值调用,主方法定义的a,b变量为实参。调用swap函数时,是这样的:
- 首先a,b的值先被传给swap方法中的x,y。
- x,y再在方法中进行交换。
- 但是由于x,y是形参,实参和形参占用各自的内存单元,互不干扰,方法中的形参并不会改变实参的值,是一种单向数据传递。
方法的重载
Java 允许同一个类中定义多个同名方法,只要它们的形参列表不同即可。如果同一个类中包含了两个或两个以上方法名相同的方法,但形参列表不同,这种情况被称为方法重载(overload)。
方法重载的要求是两同一不同:同一个类中方法名相同,参数列表不同。
public class Demo03MethodOverload {
public static void main(String[] args) {
System.out.println(sum(10, 20));
System.out.println(sum(10, 30, 50));
}
public static int sum(int a, int b) {
return a + b;
}
public static int sum(int a, int b, int c) { //方法名相同,但参数列表不同
return a + b + c;
}
}
注意事项:
- 方法重载与这些因素相关:参数个数不同,参数类型不同,参数的多类型顺序不同
- 方法重载与这些因素无关:与参数名称,方法的返回值类型无关