Day11 方法的重载
Day11 方法的重载
-
方法的重载的规则:
- 方法名称必须相同
- 参数列表必须不同(个数不同、或类型不同、参数排列顺序不同等)
- 方法的返回类型可以相同也可以不相同
- 仅仅返回类型不同不足以成为方法 的重载
-
实现理论
- 方法名称相同时,编译器会根据调用方法的参数个数、参数类型等去逐个匹配,以选择对应的方法,如果匹配失败,则编译器报错
package JAVA.Day.Method;
public class Method3 {
public static void main(String[] args) {
int max = max(20, 10);
System.out.println(max);
}
//比大小
public static int max(int a, int b) {
int result=0;
if(a==b){
result=0;//终止方法
}
if(a>b){
result=a;
}else{
result=b;
}
return result;
}
public static int max(double a, double b) {
int result=0;
if(a==b){
result=0;//终止方法
}
if(a>b){
result=(int)a;
}else{
result=(int)b;
}
return result;
}
public static double max(double a, double b,double c) {
double result=0;
if(a==b&b==c){
result=0;//终止方法
}
if(a>b&a>c&b>c){
result=a;
}
if(a>b&a>c&b<c){
result=a;
}
if(a>b&a>c&b==c){
result=a;
}
if(a<b&c<b&a>c){
result=b;
}
if(a<b&c<b&a<c){
result=b;
}
if(a<b&c<b&a==c){
result=b;
}
if(a<c&b<c&a<b){
result=c;
}
if(a<c&b<c&a>b){
result=c;
}
if(a<c&b<c&a==b){
result=c;
}
return result;
}
}
命令行传参
- 有时候运行一个程序时再传递给它消息,这是靠传递命令行参数给main()函数实现
package JAVA.Day.Method;
public class CommandLine {
public static void main(String[] args) {
//args.length 数组长度
for (int i = 0; i <args.length ; i++) {
System.out.println("args["+i+"]:"+ args[i]);
}
}
}
可变参数
- JDK 1.5开始,Java支持传递同类型的可变参数给一个方法
- 在方法声明中,在指定参数类型后加一个省略号(…)
- 一个方法中只能指定一个可变参数,它必须是方法的最后一个参数。任何普通的参数,必须在它之前声明
package JAVA.Day.Method;
public class Parameter {
public static void main(String[] args) {
Parameter Parameter = new Parameter();
Parameter.test(2,4,6,4,7);
}
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]);
}
}
递归
- A方法调用B方法,很容易理解
- 递归就是:A方法调用A方法,自己调用自己
- 利用递归可以用简单的程序来解决一些复杂的问题,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大减少了程序的代码量,递归的能力在于用有限的语句来定义对象的无限集合、
- 递归结构包括两个部分:
- 递归头:什么时候不调用自身方法。如果没有头,将陷入死循环
- 递归体:什么时候需要调用自身方法
package JAVA.Day.Method;
public class Recursion {
public static void main(String[] args) {
System.out.println(f(4));
}
//1! 1
//2! 2*1
//3! 3*2*!
public static int f(int n){
if(n == 1){
return 1;
}else{
return n*f(n-1);
}
}
}
package JAVA.Day.Method;
import java.sql.SQLOutput;
import java.util.Random;
import java.util.Scanner;
public class Calculator {
//两个数的加减乘除运算的简易计算器
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
double result = 0;
System.out.println("请输入第一个数:");
double a = scanner.nextDouble();
System.out.println("请输入第二个数:");
double b= scanner.nextDouble();
System.out.println("请输入一个运算符(+、-、*、/):");
String sign = scanner.next();
switch(sign){
case"+":
result=a+b;
break;
case"-":
result=a-b;
break;
case"*":
result=a*b;
break;
case"/":
result=a/b;
break;
}
System.out.println("结果"+result);
}
}

浙公网安备 33010602011771号