1.目的
为了解决代码冗余的问题
2.方法定义
[修饰符] 返回值类型 方法名(参数列表) {
//方法体
return 返回值;
}
注意:
1)修饰符在某些场合下可以没有,当前修饰符写成public static;
2)返回值类型要和返回值的类型一样;
3) 方法中可以没有返回值,"return 返回值;"可以写成"return;"或者不写,返回值类型为void;
4) 方法名要符合标识符的命名规范;
5) 参数列表: 数据类型 参数名1, 数据类型 参数名2, 数据类型 参数名3,方法当中可以没有参数列表;
6)大括号成对存在;
7) 方法要定义在类中。
3.方法调用
使用方法: 方法名(参数);
add(arr);
4.方法重载
1) 在同一个类中;
2)方法名相同,参数列表不同
3) 和返回值类型没有关系
/*
* 如果参数列表中传递的基本数据类型,值传递
* */
public static void swap(int a, int b) {
int temp = a;
a = b;
b = temp;
}
/*
* 传引用
* */
public static void swap(int[] a, int[] b) {
int temp = a[0];
a[0] = b[0];
b[0] = temp;
}
5.方法递归----方法调用方法本身
StackOverflowError
1)方法调用方法本身
2)要有明确的退出条件
斐波那契数列
public static int f(int n) {
if(n == 1 || n == 2) {
return 1;
}
return f(n - 1) + f(n - 2);
}
6.可变参数
1).可变参数必须是参数列表的最后一个参数;
2).参数列表中可变参数只能有一个;
3).可变参数本质上是数组;
4).在可变参数中传参,既可以传递多个参数,也可以直接传递一个数组;
5).可变参数在方法内部当成数组使用。
public static int add(int... args) {
int sum = 0;
for (int i : args) {
sum += i;
}
return sum;
}
public static void main(String[] args) {
System.out.println(add(1, 2, 3));
int[] arr = {1, 2, 3, 4, 5};
System.out.println(add(arr));
}