方法的定义
方法是一个代码片段,类似C语言中的函数。
定义方法的基本语法:
//方法的定义
public static 方法返回值 方法名称 ([参数类型 形参 ...]){
方法体代码;
[return 返回值];
}
//方法的调用
返回值变量 = 方法名称(实参 ...);
注意:
- 方法定义时,参数可以没有,但每个参数要指定类型
- 方法定义时,可以没有返回值(用 void表示返回值类型)
- 方法定义时的参数称为”形参“,方法调用时的参数称为”实参“
- 方法的定义必须在类之中
- java中没有”函数声明“这样的概念
方法的调用
- 只有调用该方法的时候才会执行
- 当方法被调用时,会将实参赋值给形参
- 参数传递完成之后就会执行到方法体代码
- 当方法执行完之后(遇到return语句),就执行完毕,回到方法调用的位置,继续往下执行
- 一个方法可以被多次调用
import java.util.Scanner;
public class TextDome {
//定义求两个数中最大值的方法
public static int max(int a, int b){ //形参a, 形参b
if(a < b){
return b;
} else return a; //调用的时候将该值返回给方法调用处
}
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int num1 = sc.nextInt(); //定义实参num1
int num2 = sc.nextInt(); //定义实参num2
System.out.println(max(num1, num2)); //输出的同时调用了max(a, b)方法
}
}
传值调用时,实参的改变对形参并不会产生影响
方法的重载
在我们需要用一个方法同时兼容多种参数时,就可以用方法的重载
public class Text {
public static int add(int a, int b){
return a + b;
}
public static double add(double a, double b){
return a + b;
}
public static double add(double a, double b, int c){
return add(a,b) + c;
}
public static void main(String[] args){
double a = 10.3;
double b = 99.4;
int c = 55;
System.out.println(add(a,b,c));
}
}
同一个方法名字,提供不同版本的实现,这就是方法重载
- 方法名相同
- 方法的参数不同(参数个数或类型)
- 方法的返回值类型不影响重载
方法递归
在一个方法的执行过程中调用自身,需要一种把大事化小的思想,尽量不要复盘递归的每一步逻辑(会让你的脑瓜子嗡嗡的),多考虑一下总的变化方式。
// 用递归的思想打印一个正整数的每一位
public class Text {
public static int printNumber(int n){
if(n < 10){
System.out.print(n);
return n;
}
printNumber(n / 10);
System.out.print(n % 10);
return n;
}
public static void main(String[] args){
printNumber(123456888);
}
}