方法
方法定义、调用
Java方法是语句的集合,它们在一起执行一个功能
原子性:一个方法只完成一个功能。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dEJ2z92j-1627356762407)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210727095402446.png)]
修饰符:定义方法的访问类型。
返回值类型: 方法可能会返回值。没有返回值时,返回值类型是关键字void。
return:也可以用来终止方法。
方法名:方法的名称。
参数类型:参数就像一个占位符。方法被调用时,传递值给参数,这个值被称为实参或变冷了。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。
方法体:代码语句,定义该方法的功能。
形参和实参
- 形式参数:在方法被调用时用于接收外界输入的数据。
- 实参:调用方法时实际传给方法的数据。
public class Demo01 {
public static void main(String[] args) {
// 10和33 是实际的参数,实际调用给a b
int sum = add(10,33,10,10);
System.out.println(sum);
}
//a和b 形式参数,用来定义
public static int add(int a,int b) {
return a*b;
}
public static int add(int a,int b,int c) {
return a*b*c;
}
public static int add(int a,int b,int c,int d) {
return a*b*c-d;
}
}
值传递和引用传递
java是值传递。
方法重载:
在一个类中,有相同的函数名称,但形参不同的函数。
package method;
// 方法重载
public class Demo02 {
public static void main(String[] args) {
int max = max(20.1,10.99);
System.out.println(max) ;
}
public static int max(int num1,int num2) {
int result =0;
if(num1==num2) {
System.out.println("num1==num2");
return 0; //return 终止程序
}
if(num1>num2) {
result = num1;
}else {
result = num2;
}
return result; // 返回值
}
public static int max(double num1,double num2) {
int result =0;
if(num1==num2) {
System.out.println("num1==num2");
return 0; //return 终止程序
}
if(num1>num2) {
result =(int) num1;
}else {
result =(int) num2;
}
return result; // 返回值
}
}
方法重载规则
-
方法名称必须相同
-
参数列表(类型不同或参数数量不同或参数排列顺序不同)必须不同
可变参数
也叫 不定项参数。
在方法声明中,在指定参数类型后加一个省略号(…)
一个方法只能指定一个可变参数,它必须是方法的最后一个参数,任何普通参数必须在它之前声明。
//可变参数
public class Demo04 {
public static void main(String[] args) {
Demo04 demo04 = new Demo04();
demo04.test(1,2,3,43,5,6);
}
public void test(int... i) {
System.out.println(i[0]);
System.out.println(i[1]);
System.out.println(i[2]);
System.out.println(i[3]);
System.out.println(i[4]);
System.out.println(i[5]);
}
}
递归
就是A方法调用A方法,自己调用自己。
调用自身少的时候可以用.
结构包括两个部分
- 递归头:什么时候不调用自身方法,如果没有,将陷入死循环。
- 递归体:什么时候调用自身方法。
public class Demo05 {
public static void main(String[] args) {
System.out.println(f(5));
}
//阶乘方法 f
// 递归 思想
public static int f(int i) {
if(i==1) { //边界条件 i==1
return 1;
}else { //前阶段
return i*f(i-1); //返回阶段 调用自身
}
}
}
练习
计算器
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in );
System.out.println("请输入第一个参与运算的数字:");
double num1 = 0;
double num2 = 0;
double d = 0;
num1 = scanner.nextInt();
System.out.println("请输入运算符:");
String c = scanner.next();
System.out.println("请输入第二个参与运算的数字:");
num2 = scanner.nextInt();
switch(c) {
case"+":d = add(num1,num2);
break;
case"-":d = subtraction(num1,num2);
break;
case"*":d = multiplication(num1,num2);
break;
case"/":d = division(num1,num2);
break;
}
System.out.println("运算结果为:"+ d);
scanner.close();
}
//加法
public static double add(double a, double b){
return a+b;
}
//减法
public static double subtraction(double a,double b){
return a-b;
}
//乘法
public static double multiplication(double a,double b){
return a*b;
}
//除法
public static double division(double a,double b){
return a/b;
}