1.为什么要使用方法(函数)?
为了提高代码的重(chong,二声)用性,避免代码冗余。
2.怎么去做?
方法定义。
[修饰符] 返回值类型 方法名(参数列表){
//方法体
return 返回值;
}
备注:
1)修饰符在某些场合下可以没有,当前修饰符写成public static;
2)返回值类型要和返回值的类型一致;
3)方法中可以没有返回值,“return 返回值”;可以写成“return;”或者不写,返回值类型为void
4)方法名要符合标识符的命名规范;
5)参数列表:数据类型 参数名1,数据类型 参数名2,……
6)大括号要成对存在
7)方法要定义在类中
3.方法调用
方法名(参数);
public static void main(String[] args) {
//调用printStar(int n)
printStar(10);
System.out.println();
//调用printStar()
printStar();
}
4.方法重载
1)在统一各类中
2)方法名相同,参数列表不同
/*
* 定义一个没有返回值的方法,传参打印*
*/
public static void printStar(int n) {
for (int i = 0; i < n; i++) {
System.out.print("*");
}
return;//return;可以不写
}
/*
* 定义一个没有返回值的方法,无参打印*
*/
public static void printStar() {
for (int i = 0; i < 10; i++) {
System.out.print("*");
}
return;//return;可以不写
}
5.方法回归
StackOverflowError -- 栈溢出
1)方法调用方法本身
2)要有明确的退出条件
例: 斐波那契数列
/*
* 方法递归
* 求第n项 斐波那契数列 的值
*/
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 class Test {
public static void main(String[] args) {
int[] arr = {1, 2, 3, 4, 5};
System.out.println(add(arr));
}
/*
* 可变参数:
* 1.可变参数必须是参数列表中的最后一个参数;
* 2.参数列表中的可变参数只能有一个;
* 3.可变参数本质上是数组;
* 4.在可变参数中传参,既可以传递多个参数,也可以传递一个数组;
* 5.可变参数在方法内部当成数组使用
*/
public static int add(int... args) {
int sum = 0;
for (int i : args) {
sum += i;
}
return sum;
}
}