方法的定义与调用

方法

1. 概述

  • 概述:就是一段具有独立功能的代码块,不调用就不执行

  • 作用:

    • 如果程序里面有好几段内容是需要实现相同功能,不使用方法的话,会导致有大量重复的代码。这种重复代码每次都要重新写一遍。所以如果不用方法,代码的重复度太高,复用性太差

    • 方法的出现,把重复代码变成类似于‘共享单车’的存在,谁有需要就直接用。提高了代码的复用性

  • 前提:

    • 方法必须是先创建才可以使用,该过程称为方法定义
    • 方法创建后并不是直接运行的,需要手动在代码中调用后才可以执行,该过程称为方法调用

2. 方法的定义和调用

  • 格式
//方法定义格式(无参数、无返回值的公共静态方法)
public static void 方法名(){
    //方法体:就是需要复用(被反复使用)的逻辑代码
}
//范例
public static void printHello(){
    System.out.println("Hello method!");
}

//方法调用:方法名();
//范例:
public static void main(String[] args) {
    printHello();
}
  • 注意事项

    • 方法必须先定义后调用,否则程序将报错

在这里插入图片描述

  • 方法与方法之间是平级关系,不能嵌套定义

在这里插入图片描述

3. 方法的调用过程

  • 方法没有被低调用的时候,都在方法区中的字节码文件(.class)中存储
  • 方法被调用的时候,需要进入到栈内存中运行

在这里插入图片描述

4. 练习:奇偶数判断

  1. 需求

在这里插入图片描述
在这里插入图片描述

  1. 思路

  2. 代码演示

public static void main(String[] args){
    //3.调用方法
    method();
}

//1.定义一个方法,功能为:判断一个数是否为奇数或者偶数
public static void method(){
    //2.判断奇偶数逻辑
    int a=10;
    if(a%2==0){
        System.out.println("偶数");
    }else{
        System.out.println("奇数");
    }
}

5. 带参数方法的定义和调用

  • 为什么要有带参数方法

    • 当方法内部逻辑有用到需要根据不同用户,不同需求去变化的值的时候,就可以定义带参数方法,把这种可能会改变的值用方法的参数替代
  • 带参数方法的定义

//单个参数
public static void 方法名(数据类型 变量名){方法体;}
//范例
public static void method(int num){方法体;}

//多个参数
public static void 方法名(数据类型 变量名1,数据类型 变量名2,...){方法体;}
//范例
public static void getMax(int num1,int num2){方法体;}

//注意
//1.方法定义时,参数中的数据类型与变量名都不能缺少,缺少任意一个程序都将报错
//2.方法定义时,多个参数之间使用逗号分隔
  • 带参数方法的调用

在这里插入图片描述

  • 代码练习
/* 
* 练习1:定义一个方法,接收一个int类型的参数,判断该数字是是奇数还是偶数,在控制台打印出来。
* 在主方法中调用
*/


/* 
* 练习2:定义一个方法,接收两个int类型的数字,判断哪个数字是最大值,打印最大值
* 在主方法中调用
*/


6. 形参和实参

  1. 概念
    • 形参:形式参数,是指方法定义中的参数
    • 实参:实际参数,方法调用中的参数

在这里插入图片描述

7. 带参数方法的练习:打印n~m之间所有的奇数

  • 需求:设计一个方法(print)用于打印n到m之间所有的奇数

  • 思路:
    在这里插入图片描述


8. 带返回值方法的定义和调用

  • 为什么要有带返回值的方法

    • 我们经常会根据一个方法产出的结果,来去组织另外一段代码逻辑,为了拿到这个方法产生的结果,就需要定义带有返回值的方法
  • 带返回值方法的定义
    在这里插入图片描述

  • 带返回值方法的调用
    在这里插入图片描述

  • 代码演示

//案例:计算两个数的乘积
public static void main(String[] args) {
    //3.调用方法,因为方法定义了两个参数,都是整数,所以这里要给两个整数的实参
    //4.因为方法有返回值,所以可以在方法调用处使用一个变量接收这个方法调用完的返回值
    //5.方法返回值什么类型,接收的变量就应该是什么类型
    int result = cheng(2, 3);
    System.out.println(result);//结果:6
}
//1.两个整数的乘积,结果还是整数,所以返回值类型应该为int
public static int cheng(int num1,int num2) {
    //2.通过return关键,返回乘积
    return num1 * num2;
}

9. 带返回值方法的练习:求两个数的最大值

  • 需求:设计一个方法可以获取两个数的较大值,数据来自于参数

  • 思路:
    在这里插入图片描述




```java

10. 方法的注意事项

  • 方法不能嵌套定义

  • 方法的返回值类型为void,表示该方法没有返回值,没有返回值的方法可以省略return语句不写,如果要写return语句,后面不能跟具体的数据

  • return语句下面,不能编写代码,因为永远执行不到,属于无效代码

  • return语句,如果要返回值,只能带回一个结果

//案例:没有返回值的方法,可以省略return不写
public static void eat(){
    System.out.println("吃饭");
    //return的其中一个作用,是结束整个方法,但是不可以带返回值
    return;
    //return 3; 方法本身没有规定返回值,在此处就不能带返回值,因为你也不知道返回什么类型比较合适
}

//案例:计算器加法运算
public static int add(int num1,int num2){
    // return的第二个作用,就是返回一个值
    return num1+num2;
}
    
    

//案例:return语句下面,不能编写代码
public static void drink(int age){
    if(age<8){
         System.out.println("喝白开水");
        //此处是个if判断语句,按照逻辑推断,如果进入if语句中,下面的代码逻辑肯定是不想再执行
        //如果此处不加以限制,if执行结束,代码依然会执行:喝红牛
        //所以此处可以加上return,直接结束方法
        return;
        //注意,说的return下面不能加代码,是指同一个逻辑代码块(大括号)中而已
    }
     System.out.println("喝红牛");
}

12. 方法重载

  • 概念:在同一个类中,方法名相同,参数列表不同(参数顺序不同也算不同,变量名不同不算)的多个方法,形成了方法的重载。

  • 方法签名:JVM调用方法的时候是通过方法签名去区分的,方法签名包括方法名,参数数量、类型和顺序

  • 注意:参数顺序不同虽然也可以构成方法重载,但是不推荐,没有意义




## 13. 方法参数传递:基本数据类型

- 方法的形参在内存当中也就是一个变量而已

- 一个方法在传递参数的时候,如果是基本数据类型,那么传递的就是该变量所记录的具体的数值

```java
public static void main(String[] args) {
    int number = 100;
    System.out.println("main方法中,调用change方法前:" + number);//结果:100
    //基本数据类型,传递的是number的数值,而非变量
    change(number);
    //打印的变量,依然还是main方法中的变量,此变量的值未有任何改变,依然是100
    System.out.println("main方法中,调用change方法后:" + number);//结果:100
}

//方法的形参相当于是这个方法中的一个局部变量,属于change方法,和main方法中的变量不是同一个
public static void change(int number) {
    //在未执行下方赋值操作时,从main方法传递过来的是值100,将100赋值给了change方法的变量number
    //此时修改的是change方法中的变量number值,对main方法中的number无影响
    number = 200;
    System.out.println("在change方法中的:" + number);//结果:200
}

}








```java

```java

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值