12_方法

方法

概念:实现特定功能的一段代码,可反复使用

定义语法:
public static 返回值类型 方法名称(形式参数){

​ //方法主体

​ }

一. 方法的参数

  • 多数情况下,方法与调用者之间需要数据的交互;调用者必须提供必要的数据,才能使方法完成相应的功能

  • 调用方法时,所传入的数据被称为“参数”

  • 作用:方法的参数可以让代码功能更灵活、普适度更高、易于修改和维护

方法的调用:

  • 调用方法时会优先执行方法内部代码,结束后,返回到方法调用处,继续向下执行

调用语法:

方法名称(实际参数);

经验:

  • 将需要在多个位置重复使用的一组代码,定义在方法内部
  • 方法定义在类的内部,与main方法并列
  • “形参”等价于“局部变量的声明”
  • “实参”等价于“局部变量的赋值”
  • 根据具体的业务需求,来定义方法的参数
public static boolean login(String username, String password){
    
}//用户名、密码
public static boolean login(String name, String pwd, String checkNo){
} //用户名、密码、验证码

二. 返回值与返回值类型

返回值类型:规定返回值的具体类型(基本、引用、void)

返回值:方法执行后的返回结果

  • 方法执行后,一些情况下无需返回结果,另一些情况下则必须返回结果

  • 例如:存款操作无需返回结果,取款操作必须返回结果

定义语法:
public static 返回值类型 方法名称(形式参数列表){

​ //方法主体

​ return value;//返回值

​ }

调用语法:

变量 = 方法名称();

  • 方法调用的表达式,最终即代表了所返回的结果
  • 变量类型与返回值类型一致
  • 定义时,即约定了返回的结果类型

return关键字:

当有返回值的方法存在分支结构时,必须保证每一条分支都具有正确的返回值 例:

if(num % 2 == 0){
	return "偶数";
}else{
    return "奇数";
}

return的两种用法:

应用在具有返回值类型的方法中:
return value;//表示结束当前方法,并伴有返回值,返回到方法调用处

应用在没有返回值类型(void)的方法中:
return; //表示结束当前方法,直接返回到方法调用处

三. 方法的重载

重载就是在一个类中,有相同的方法名称,但形参不同的方法

方法的重载:

  • 方法名称必须相同
  • 参数列表必须不同(个数不同、或类型不同、参数排列顺序不同等)
  • 方法的返回类型可以相同也可以不同
  • 仅仅返回类型不同不足以称为方法的重载

四. 方法总结

注意:一个类中可以定义多个方法,方法之间属于并列关系,不可嵌套

经验:一个方法只做一件事

好处:

  • 减少代码冗余
  • 提高复用性
  • 提高可读性
  • 提高可维护性
  • 方便分工合作

五. 递归

什么是递归?

  • 解决具有既定规律的问题时,在方法内部再次调用自身方法的一种编程方式

何时使用递归?

  • 当需要解决的问题可以拆分成若干个小问题,大小问题的解决方式相同,方法中自己调用自己

  • 使用循环解决的常规问题,都可以替换为递归解决

如果正确使用递归?

  • 设置有效的出口条件,可以让调用链上的每个方法都可以正确返回,避免无穷递归

六. 代码

题目一:打印分隔符

public class TestMethod{
	
	public static void main(String[] args){
		
		System.out.println("床前明月光");	
		printSign();		
		System.out.println("疑是地上霜");		
		printSign();		
		System.out.println("举头望明月");		
		printSign();	
		System.out.println("低头思故乡");		
		printSign();
		
	}
	//自定义方法:在一行中输入10个减号,代表分隔符
	
	public static void printSign(){
		
		for(int i = 1; i <= 10; i++){
			System.out.print("-");
		}
		System.out.println();
	}
}

题目二:传入参数,打印出不同数量和样式的符号

public class TestMethod2{
	
	public static void main(String[] args){
		
		System.out.println("床前明月光");
		printSign(1 , '-');	
		System.out.println("疑是地上霜");	
		printSign(3 , '#');		
		System.out.println("举头望明月");		
		printSign(5 , '*');		
		System.out.println("低头思故乡");		
		printSign(7 , '+');
		
	}
	//自定义方法
	
	public static void printSign(int count , char sign){
		
		for(int i = 1; i <= count; i++){
			System.out.print(sign);
		}
		System.out.println();
	}
}

题目三:return

public class TestReturn{
	
	public static void main(String[] args){
		
		int result = add(1, 2);
		
		System.out.println(result);
		
		int result2 = add(result, 3);
		
		System.out.println(result2);
	}
	
	public static int add(int num1, int num2){
		
		int sum = num1 + num2;
		
		return sum;
	} 
}

题目四:return2

public class TestReturn2{
	
	public static void main(String[] args){
		
		double result = calc(1.5, 2.5);
		System.out.println("计算结果:" + result);
		
		String result2 = isEven(2);
		System.out.println(result2);
		
		show();
	}
	
	public static double calc(double a, double b){
		double sum = a + b;
		System.out.println("运算结束");
		return sum;//结束当前方法,并伴有返回值,返回到方法调用处
	}
	
	public static String isEven(int num){
		
		if(num % 2 == 0){	
			return "偶数";
		}else{
			return "奇数";
		}
	}
	
	public static void show(){
		for(int i = 1; i <= 10; i++){
			System.out.println("当前值" + i);
			if(i == 5){
				return;//结束当前方法,返回到方法调用处
			}
		}
	}
}

题目五:计算阶乘

public class TestFactorial1{
	
	public static void main(String[] args){
		
		System.out.println(factorial(5));
		
	}
	
	public static int factorial(int n){
		int sum = 1;
		for(int j = 2; j <= n; j++ ){
			sum *= j;
		}
		return sum;
	}
}

题目六:递归

public class TestFactorial2{
	
	public static void main(String[] args){
		
		System.out.println(factorial(5));
	}
	
	public static int factorial(int n){
		if(n == 1){
			return 1;
		}
		return n*factorial(n - 1);  
	}
}
posted @ 2021-02-02 15:50  MARSdoubleZ  阅读(62)  评论(0编辑  收藏  举报