【方法及重载】

模块六. 方法

第一章. 方法的使用

1. 方法介绍以及简单的方法定义

1. 介绍方法定义

1. 问题描述:
    之前所有的代码都在main方法中,如果我们将来所有功能的代码都放到main方法中,会显得main方法代码太多太乱太臃肿,不好维护

    解决:将不同功能的代码放到不同的方法中,像执行某个功能,直接调用方法名就行了,			 对应的代码就自动执行起来了,将来维护的时候,直接找到对应的方法,就可以对其直接修改维护

2. 方法:
    拥有功能性代码的代码块
    将/*不同的功能放在不同的方法*/中,给每个方法取个名字,直接调用方法名,对应的方	 法就执行起来了,好维护

3. 通用定义格式:
    修饰符 返回值类型 方法名(参数){
    	方法体
        return 结果
}

在这里插入图片描述

代码示例
public class Demo01Method {
    public static void main(String[] args){
       farmer();
        cook();
       me();
    }

    // 农民伯伯
    public static void farmer(){
        System.out.println("播种");
        System.out.println("施肥");
        System.out.println("拔草");
        System.out.println("浇水");
        System.out.println("除虫");
        System.out.println("收割");

    }

    //厨师
        public static void cook(){
        System.out.println("洗菜");
       System.out.println("切菜");
        System.out.println("炒菜");
        System.out.println("装盘");
        System.out.println("上菜");
    }

    //我们自己
    public static void me(){
        System.out.println("洗手");
        System.out.println("吃菜");
    }
}

2. 方法定义各部分解释

1. 通用格式定义方法:
    修饰符 返回值类型 方法名(参数){
    	方法体
        return 结果
}

2. 各部分解释:
    a. 修饰符:  public :公共的访问权限,在哪都能调用 
    		   static : 静态的
               修饰符不分顺序,谁前谁后都行

    b. 返回值类型:
           该方法最终返回的结果的数据类型
               比如: return 1   -> 方法上返回值类型写 int    
                     return 2.5 -> 方法上返回值类型写 double
                     return ""  -> 方法上返回值类型写 String
                     如果没有返回值,不要写具体的返回值类型了,要写 void  

   c. 方法名:见名之意(小驼峰式)

   d. 参数:进入到方法内部参与执行的数据(数据类型 变量名,数据类型 变量名) 

   e. 方法体:实现该方法的具体代码

   f. return 结果:如果有返回值,可以利用 return 将结果返回                

在这里插入图片描述

2. 无参数无返回值的方法定义和执行流程

1. 定义以及调用格式

1. 通过通用格式,分成/**四种方法**/来学习:
  a. 无参无返回值方法
  b. 有参无返回值方法
  c. 无参有返回值方法
  d. 有参有返回值方法

2. 调用:
  无返回值的方法调用都是直接调用

  有返回值的方法调用: 打印调用	
  				  赋值调用(推荐)
1. 无参无返回值方法定义:
  public static void 方法名(){
  	方法体 //实现此方法的具体代码
}

2. 调用:
  在其他方法中: 方法名();

3. 注意事项:
  a. void 关键字代表无返回值,写了 void ,就不要在方法中写 return 结果

  b. 方法不调用不执行, main 方法归虚拟机调用

  c. 方法之间是/*平级关系,不能嵌套*/

  d. 方法的/*执行顺序只和调用顺序有关*/,和定义顺序无关
代码示例
public class Demo01Method {
  public static void main(String[] args){
      farmer();
      cook();
      me();
  }

  // 农民伯伯
  public static void farmer(){
      System.out.println("播种");
      System.out.println("施肥");
      System.out.println("拔草");
      System.out.println("浇水");
      System.out.println("除虫");
      System.out.println("收割");

  }

  //厨师
  public static void cook(){
      System.out.println("洗菜");
      System.out.println("切菜");
      System.out.println("炒菜");
      System.out.println("装盘");
      System.out.println("上菜");
  }

  //我们自己
  public static void me(){
      System.out.println("洗手");
      System.out.println("吃菜");
  }
}
练习
//定义一个方法,实现两个整数相加

public class Demo02Method {
  public static void main(String[] args) {
      add();
  }
  //定义一个方法,实现两个整数相加
  //无参无返回值方法
  public static void add(){
      int a = 10;
      int b = 20;
      int sum = a + b;
      System.out.println("sum = " + sum);
  }
}

2. 执行流程

在这里插入图片描述

在这里插入图片描述

3. 有参数无返回值的方法定义和执行流程

1. 定义以及调用格式

1. 格式:
 public static void 方法名(数据类型 变量名){
 	方法体
}

2. 调用:
 方法名(具体的值) -> 调用的时候要给参数赋值
代码示例
//需求:定义一个方法,实现两个整数相加

public class Demo03Method {
 public static void main(String[] args) {
     sum(15,20);
 }

 public static void sum(int a,int b){
     //方法名可以和变量名重复
     int sum = a + b;
     System.out.println(sum);
 }
}    

2. 执行流程

在这里插入图片描述

4. 无参数有返回值的方法定义和执行流程

1. 定义以及调用

1. 格式:
 public static 返回值类型 方法名(){
		方法体
		return 结果    
}

2. 调用: 返回值返回给了谁?哪里 调用返回给哪里
 a. 打印调用:
  		sout(方法名())						            -> 不推荐

 b. /*赋值调用*/:调用完之后用一个变量接受返回值结果	    -> 极力推荐
 			数据类型 变量名 = 方法名()
代码示例
//需求:定义一个方法,实现两个整数相加,将结果返回

public class Demo04Method {
 public static void main(String[] args) {
     //打印调用 - > 不推荐
     System.out.println(sum());

     //赋值调用 -> 极力推荐
     int result = sum();
     System.out.println("result = " + result);
 }
 public static int sum(){
     int a = 10;
     int b = 20;
//      return a + b;
     int sum = a + b;
     return sum;
 }
}

2. 执行流程

在这里插入图片描述

5. 有参数有返回值的方法定义和执行流程

1. 定义以及调用

1. 格式:
 public static 返回值类型 方法名(参数){
 	方法体
         return 结果
}

2. 调用:
 a. 打印调用
		sout(方法名(具体的值))

 b. 赋值调用 										-> 极力推荐
		数据类型 变量名 = 方法名(具体的值)	
代码示例
//需求:定义一个方法,实现两个整数相加,将结果返回

public class Demo05Method {
 public static void main(String[] args) {
     int result = sum(10, 20);
     System.out.println(result);
 }
 public static int sum(int a,int b){
     int sum = a + b;
     return sum;
 }
}

2. 执行流程

在这里插入图片描述

6. 形式参数和实际参数

1. 形式参数(形参):在/*定义*/方法的时候形式上定义的参数,此参数还/*没有赋值*/

2. 实际参数(实参):在/*调用*/方法的时候给形参赋予的具体的值,此参数/*被赋值*/

在这里插入图片描述

7. 参数和返回值使用的时机

1. 参数:什么时候需要参数?
  当想将方法A(比如main方法)的数据传递到方法B(比如定义了一个实现加法的方法),那么定义方法B时就需要带个参数,在方法A中调用方法B时,可以将方法A中的数据通过参     数传递到方法B2. 返回值:什么时候需要有返回值?
 调用方法C时,想要方法C的结果,去参与其他的操作,那么方法C就需要将自己的结果返回

3. 总之,看需求决定是否需要参数和返回值
举例

在这里插入图片描述

Controller接收的请求的参数需要一层一层传递到service层,service层需要将请求参数再传递到dao层,此时service的方法以及dao的方法都需要参数来接收

dao层的结果需要传递给service层,service再传递给Controller层,此时dao层和service方法需要返回值    

8. 变量作为实参使用

练习
//需求:定义一个方法,比较两个整数的大小,如果第一个比第二个大,返回true,否则返回		false

import java.util.Scanner;

public class Demo07Method {
public static void main(String[] args) {
  Scanner sc = new Scanner(System.in);
  int a = sc.nextInt();
  int b = sc.nextInt();
  boolean result = compare(a, b);
  //传递的是变量a,b,但我们真正传递的是a,b代表的数据,不是变量本身,此时变		  量作为实参使用

  System.out.println(result);
}

public static boolean compare(int a,int b){
//        if(a > b){
//            return true;
//        }else {
//            return false;
//        }

  return a > b ? true : false;
}
}

第二章. 方法注意事项终极版

1. 方法

  1. 方法不调用不执行

  2. 方法的执行顺序只和调用顺序有关

  3. 方法之间不能互相嵌套

  4. void 不能和[return 结果]共存,但是void 能和 [return] 共存

    a. void:代表没有返回值
    b. return 结果:就代表有返回值了
    先将结果返回,然后结束方法
    c. return : 仅仅代表结束方法,不代表有返回值

  5. 一个方法中不能连续写多个return():{一个方法不能有多个返回值}

  6. 调用方法的时候要看看下面有没有这个方法

1. 方法不调用不执行

2. 方法的执行顺序只和调用顺序有关

3. 方法之间不能互相嵌套

4. void 不能和[return 结果]共存,但是void 能和 [return] 共存
		a. void:代表没有返回值
		b. return 结果:就代表有返回值了
  					先将结果返回,然后结束方法
  	c. return : 仅仅代表结束方法,不代表有返回值

5. 一个方法中不能连续写多个return():{一个方法不能有多个返回值}    

6. 调用方法的时候要看看下面有没有这个方法
代码演示
public class Demo08Method {
  public static void main(String[] args){
      System.out.println("Hello World !");

      method1();

//        method04();   //没定义这个方法,不能调用
  }

  public static int method1(){
      return 1;   //  return 结果; 代表有返回值
  }

  public static void method2(){
      return ;//仅仅代表结束方法,不代表有返回值
  }
}
初学者怎么写:
  1. 先定义,再调用
  2. 如果是没有返回值的方法,直接在被调用的方法内部输出结果
  3. 如果是带返回值的方法,就调用完毕之后,用一个变量去接收结果,输出这个变量
  4. 调用方法:
  	直接调用:方法名() 方法名(实参) - > 只针对于无返回值的方法
  	打印调用:sout(方法名{}) 或者 sout(方法名{实参})-> 不推荐使用
  	赋值调用:数据类型 变量名 = 方法名() 
  	或者 数据类型 变量名 = 方法名(实参) -> 针对于有返回值的方法 -> 推荐使用
怎么练习:
  1. 如果定义的方法没有返回值,写个void 不要写return 结果
  2. 如果定义的方法有返回值,就将void 改成具体的返回值类型,在方法体中最后写一		 个 return 结果,将结果返回
  3. 如果方法有返回值,调用的时候推荐使用赋值调用,如果没有返回值,使用直接调用
  4. 练习的时候,只需要完成一个简单的需求(比如:两整数相加),针对此需求,定义4		种方法,并成功调用

第三章. 方法练习

需求:
1. 键盘录入一个整数,将整数传递到另外一个方法中,在此方法中判断这个整数的奇偶性,
  如果是偶数,则返回“偶数”,否则返回“奇数”。

2. 求出1-100的和,并将结果返回。

3. 定义一个方法,给这个方法传几,就让这个方法循环打印几次“我是一个有经验的Java开发工程师”


4. 在main方法发中定义一个数组,将数组传递到另外一个方法中,在此方法中遍历数组

在这里插入图片描述

数组本身是引用数据类型,引用数据类型做方法参数传递,传递的是地址值

5. 数组作为返回值返回
public class Demo02Method {
  public static void main(String[] args) {
      int[] method = method();
      System.out.println(method);//地址值
      for (int i = 0; i < method.length; i++) {
          System.out.println(method[i]);
      }
  }

  public static int[] method(){
      int a = 10;
      int b = 20;
      int sum = a + b;
      int sub = a - b;
      int[] arr1 = {sum,sub};
      return arr1;//返回的是一个int[] ,那么返回值类型也应该是int[]
  }
}

在这里插入图片描述

返回值是引用数据类型时,返回的是地址值

第四章. 方法的重载

1. 概述:方法名相同,参数列表不同的方法

2. 什么叫参数列表不同:
 a. 参数个数不同
 b. 参数类型不同
 c. 参数类型顺序不同

3. 判断两个方法是否为重载方法,和什么无关:
 a. 和参数名无关
 b. 和返回值无关
public class Demo02OverLoad {
  public static void main(String[] args) {
  }

  public static void open(){
  }
  public static void open(int a){
  }

  public static void open(int a,int b){
  }

  public static void open(double a, int b){
  }

  public static void open(int a, double b){
  }

//    public void open(int i,double b){}

  public static void OPEN(){}

//    public static void open(int i,int j){}


如果定义方法功能一样(比如都是相加),只不过实现细节不一样(三个整数相加,四个小小数相加),就可以考虑定义成重载的方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值