zoukankan      html  css  js  c++  java
  • 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);  
    	}
    }
    
  • 相关阅读:
    MYSQL最大连接数设置
    判断闰年
    Hanoi塔问题(递归)
    字符串替换(find函数和replace函数)
    全排列问题(next_permutation函数)
    南阳理工 oj 题目739 笨蛋难题四
    (c++实现)南阳理工 题目325 zb的生日
    (c++实现)南洋理工 oj 267 郁闷的C小加(二)
    (c++实现)南阳理工acm 题目117 求逆序数
    (c++实现) 南洋理工acm 题目2 括号配对问题
  • 原文地址:https://www.cnblogs.com/MRASdoubleZ/p/14362426.html
Copyright © 2011-2022 走看看