方法的重载&可变参数&递归函数&计算器
方法的重载
- 重载就是在一个类中,有相同的函数名称,但形参不同的函数
- 重载中方法名必须相同,参数列表必须不同(个数不同,或者类型不同,或者参数排列顺序不同方法的返回类型可以相同也可以不同,仅仅返回值不同不足以成为方法的重载
- 重载实现的理论,方法名撑相同时,编译器会根据调用方法的参数个数,参数类型等去逐个匹配,以选择对象的方法。如果匹配失败,编译器就会报错。
一个类中有两个相同名字的方法
可变参数
- Java支持传递同类型的可变参数给一个方法
- 在声明方法中,在指定参数类型后加一个省略号(...)
- 一个方法只能指定一个可变参数,它必须是方法的最后一个参数,任何普通参数必须在它声明之前
代码演示(输出最大值)
public static void main(String[] args) {
// 调用可变参数的方法
printMax(1,2,3,4,5);
printMax(new double[]{1,2,3});
}
public static void printMax(double... i){
if(i.length==0){
System.out.println("没有");
return;
}
double result=i[0] ;
for (int j = 1; j < i.length; j++) {
if (i[j]>result) {
result=i[j];
}
}
System.out.println("最大的数"+result);
}
alt+回车==>自动补全
mspnt:在运行(win+r)中输入,就会打开画图工具
递归函数
递归结构包括两个部分:
递归头:什么时候不调用自身方法,如果没有头,将陷入死循环
递归体:什么时候需要调用自身方法
在基数比较小的前提下使用递归,其他时候尽量不使用递归。
代码演示(阶乘):
public static void main(String[] args) {
System.out.println(test(3));
}
public static int test(int n){
if (n==1) {
return n;
} else {
return n*test(n-1);
}
}
简易计算器
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
char q;
do {
System.out.println("请输入第两个数字进行简单的加减乘除");
double num1 = s.nextDouble();
char operator = s.next().charAt(0);
double num2 = s.nextDouble();
switch (operator) {
case '+':
System.out.println(add(num1, num2));
break;
case '-':
System.out.println(subtract(num1, num2));
break;
case '*':
System.out.println(multiply(num1, num2));
break;
case '/':
System.out.println(divide(num1, num2));
break;
default:
System.out.println("你输入的运算符不对哦");
}
System.out.println("是否重新进行运算?请输入y/n");
q =s.next().charAt(0);
}while (q =='y');
System.out.println("亲,感谢你的使用哦");
s.close();
}
public static double add(double n,double m) {
return n+m;
}
public static double subtract(double n,double m) {
return n-m;
}
public static double multiply(double n,double m) {
return n*m;
}
public static double divide(double n,double m) {
return n/m;
}