文章目录
- 方法的定义
- 方法的传参
- 方法的重载
- 方法的递归
一、方法的定义
方法就是类似于C语言中的函数。
方法存在的意义:
1、能够模块化的组织代码(当代码规模比较复杂)。
2、做到代码能够被重复使用,一份代码可以在多个位置使用。
3、让方法更好理解更简单。
4、直接调用现有方法,不需要造轮子。
方法定义:
// 方法定义修饰符 返回值类型 方法名称 ([ 参数类型 形参 ...]){方法体代码 ;[ return 返回值 ];}
注意:
1. 修饰符:现阶段直接使用public static 固定搭配
2. 返回值类型:如果方法有返回值,返回值类型必须要与返回的实体类型一致,如果没有返回值,必须写成void
3. 方法名字:采用小驼峰命名
4. 参数列表:如果方法没有参数,()中什么都不写,如果有参数,需指定参数类型,多个参数之间使用逗号隔开
5. 方法体:方法内部要执行的语句
6. 在java当中,方法必须写在类当中
7. 在java当中,方法不能嵌套定义
8. 在java当中,没有方法声明一说
方法调用的过程
调用方法
---
>
传递参数
---
>
找到方法地址
---
>
执行被调方法的方法体
---
>
被调方法结束返回
---
>
回到主调方法继续往下
执行
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
int a = 10;
int b = 20;
System.out.println("第一次调用方法之前");
int ret = add(a, b);
System.out.println("第一次调用方法之后");
System.out.println("ret = " + ret);
System.out.println("第二次调用方法之前");
ret = add(30, 50);
System.out.println("第二次调用方法之后");
System.out.println("ret = " + ret);
}
public static int add(int x,int y){
System.out.println("调用方法中 x = " + x + " y = " + y);
return x + y;
}
}
注意:
1、定义方法的时候, 不会执行方法的代码. 只有调用的时候才会执行.
2、一个方法可以被多次调用.
二、方法的传参
Java
中方法的形参就相当于
函数中的自变量
,用来接收
函数在调用时传递的值的
。形参的名字可以随意
取,对方法都没有任何影响,
形参只是方法在定义时需要借助的一个变量,用来保存方法在调用时传递过来的值
。
import java.util.Scanner;
/*public class Main{
public static void swap(int x,int y){
int tmp=x;
x=y;
y=tmp;
}
public static void main(String[] args) {
int a=10,b=20;//由于a,b是局部变量存储在栈区,不能够获取到栈上面的地址,如果将二者交换需要将这两个变量放在堆上
swap(a,b);
System.out.println(a);//从调用结果上面来看a,b之间没有发生交换
System.out.println(b);
}
}*/
public class Main{
public static void swap(int[] arr){
int tmp=arr[0];//利用引用类型在对上面开辟一断空间,进行变量的交换
arr[0]=arr[1];
arr[1]=tmp;
}
public static void main(String[] args) {
int[] arr={10,20};
swap(arr);
for(int i=0;i<2;i++)
{
System.out.println(arr[i]);
}
}
}
三、方法的重载
在
Java
中,如果多个方法的名字相同,参数列表不同,则称该几种方法被重载了
。
public class Main {
public static void main(String[] args) {
System.out.println(add(1, 2)); // 调用add(int, int)
System.out.println(add(1.5, 2.5)); // 调用add(double, double)
System.out.println(add(1.5, 2.5, 3.5)); // 调用add(double, double, double)
}
public static int add(int x, int y) {
return x + y;
}
public static double add(double x,double y){
return x+y;
}
public static double add(double x,double y,double z){
return x+y+z;
}
}
注意:
1. 方法名必须相同
2. 参数列表必须不同(参数的个数不同、参数的类型不同、类型的次序必须不同)
3. 与返回值类型是否相同无关
4.方法签名即:经过编译器编译修改过之后方法最终的名字。具体方式:方法全路径名+参数列表+返回值类型,构成 方法完整的名字。
四、方法的递归
一个方法在执行过程中调用自身, 就称为 "递归".
递归的必要条件:
1. 将原问题划分成其子问题,注意:子问题必须要与原问题的解法相同
2. 递归出口
public class Main {
public static void main(String[] args) {
int n = 5;
int ret = factor(n);
System.out.println("ret = " + ret);
}
public static int factor(int n) {
if (n == 1) {
return 1;
}
return n * factor(n - 1); // factor 调用函数自身
}
}