Java中方法的基本用法及方法重载

文章目录

  • 前言
  • 一、方法的基本用法
    • 1.什么是方法(method)?
    • 2.方法定义语法
    • 3.方法调用的执行过程
    • 4.实参和形参的关系(重要)
  • 二、方法的重载
    • 1.方法重载的概念及基本用法
    • 2.方法重载的规则

前言

本篇博客主要介绍Java中方法的基本用法,方法重载,重点需要掌握方法中实参和形参的关系。


一、方法的基本用法

1.什么是方法(method)?

方法就是把一段{ }代码抽出来的片段,即一个代码片段,类似于C语言当中的“函数”。

方法存在的意义:

1.当代码规模比较复杂时,能模块化组织代码。
2.做到代码被重复使用, 一份代码可以在多个位置使用。
3.让代码更好理解更简单。
4.直接调用现有方法开发, 不必重复造轮子。

2.方法定义语法

基本语法:

方法定义:
public static 方法返回值 方法名称([参数类型 形参 …]){
方法体代码;
[return 返回值];
}

方法调用 :
返回值变量 = 方法名称(实参…);

该方法是否有返回值,要看这个方法它的作用或者功能是什么

比如:求某几个数(int)的和 => 我现在调用这个方法就是想知道这几个数的和是多少,当然需要有返回值告知调用者返回值是多少。

实现一个方法,接受任意一个正整数,输出每一位的数字是几 =>n传入任意一个正整数,就能输出每一位数字,不需要返回值。

代码示例:用一个方法实现两个整数相加

public class Test {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
//        方法调用
        int ret = add(a,b);
        System.out.println(ret);
    }
//    方法定义
//add方法接收两个整型参数,返回a + b的和
    public static int add(int a,int b){
        return a + b;
    }
}
//运行结果
30

注意事项:

1.方法定义时,参数可以没有,如果有参数,则每个参数要指定类型。
2.方法定义时,返回值也可以没有,若没有返回值,则返回值类型应用void。
3.方法定义时的参数称为 “形参”, 方法调用时的参数称为 “实参”。
Java中方法的基本用法及方法重载_第1张图片

4.方法的定义必须在类之中,主方法之外, 代码书写在调用位置的上方或者下方均可。
5.Java 中没有 “函数声明” 这样的概念,只有方法的名称和参数,没有具体实现这样是不可以的。

3.方法调用的执行过程

基本规则:

1.定义方法的时候, 不会执行方法的代码. 只有调用的时候才会执行。
2.当方法被调用的时候, 会将实参赋值给形参。
3.参数传递完毕后, 就会执行到方法体代码。
4.当方法执行完毕之后(遇到 return 语句), 就执行完毕, 回到方法调用位置继续往下执行。

5.一个方法可以被多次调用。

示例:

public class Blog {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        System.out.println("第一次调用方法之前");
        int ret = add(a, b);
        System.out.println("第一次调用方法之后");
        System.out.println("ret = " + ret);
        System.out.println("第二次调用方法之前");
        ret = add(30, 50);
        System.out.println("第二次调用方法之后");
        System.out.println("ret = " + ret);
    }
    public static int add(int x, int y) {
        System.out.println("调用方法中 x = " + x + " y = " + y);
        return x + y;
    }
}

//运行结果
第一次调用方法之前
调用方法中 x = 10 y = 20
第一次调用方法之后
ret = 30
第二次调用方法之前
调用方法中 x = 30 y = 50
第二次调用方法之后
ret = 80

4.实参和形参的关系(重要)

在Java中,方法的参数传递只有值传递,所谓的值传递就是把实参的值拷贝一份给形参,对实参没有任何影响。
示例:

public class Blog {
    public static void main(String[] args) {
        //x和y是主方法中的x和y,实参
        int x = 10;
        int y = 20;
        //调用swap方法时,将x的值10和y的值20拿出来复制一份传递给a和b
        swap(x,y);
        System.out.println("x = " + x + ",y = " + y);
    }

    //调用swap时,就有实参到形参的传递,将实参的值拷贝一份赋值给形参
    //swap-x = main-x = 10;swap-y = main-y = 20
    private static void swap(int x, int y) {
        System.out.println("调用swap方法中");
        //交换的都是swap-x和swap-y对main-x和main-y不造成任何影响
        int temp = x;
        x = y;
        y = temp;
        System.out.println("x = " + x + ",y = " + y);
    }
}

//运行结果
调用swap方法中
x = 20,y = 10
x = 10,y = 20

在方法外部交换两个局部变量的场景在Java中压根就不存在
解决这个问题需要引入引用数据类型(数组或对象)
注意:

方法的返回值可有可无,没有返回值的方法使用void声明,在没有返回值的方法中,仍然可以使用return;表示提前结束方法的调用。

public class MethodTest {
    public static void main(String[] args) {
        printNum(100);
    }
    //传入一个num,输出第一个从1-num的3的倍数
    public static void printNum(int num){
        for (int i = 1; i <= num; i++) {
            if (i % 3 == 0){
                System.out.println(i);
                //直接终止本次方法的调用,返回调用处继续执行
                return;
            }
        }
    }
}

//运行结果
3

二、方法的重载

1.方法重载的概念及基本用法

同一个方法名字, 提供不同版本的实现, 称为 方法重载

方法重载发生在“同一个类中”,定义了若干个方法名称相同,参数列表不同(参数的类型或者个数不同)的一组方法,与返回值无关

示例:

public static int add(int x, int y) {
return x + y;
}
public static double add(double x, double y) {
return x + y;
}

以上方法的功能为计算不同类型参数的和,功能相同,只是参数列表不同,构成重载。

2.方法重载的规则

针对同一个类:
方法名相同
方法的参数不同(参数个数或者参数类型)
方法的返回值类型不影响重载

示例:

public static int add(int x, int y) {
return x + y;
}
public static double add(double x, double y) {
return x + y;
}
public static double add(double x, double y, double z) {
return x + y + z;
}

以上的三个方法只有参数类型,或者参数的个数不同,所要实现的功能都是相同的,都是计算参数的和,使用同一个名字,提供不同版本的实现,构成方法重载。

//编译错误,以下两个方法不构成方法重载,是发生了方法重复
public static void m4(int a,int b){}
public static void m4(int b,int a){}
//以下两个方法不构成重载,只是返回值类型不同
public static int add(int x, int y) {
    return x + y;
}
public static double add(int x, int y) {
   return x + y;
}

你可能感兴趣的:(java)