Java学习笔记-基础day-4-方法重载

本文介绍了Java中的方法重载,详细讲解了方法重载的概念、作用和调用方式。同时,探讨了方法参数传递,解释了如何将数值传递给方法参数,并在方法中进行运算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、方法重载
1、概念:

同一个类中,多个功能相同,但是参数列表不同的多个方法,可以使用相同的名称,这种多个同名不同参的方法。

2、作用:

减少了方法名称的数量。

3、调用
	(1)根据名称找到对应的方法
    (2)根据参数的数量找到对应的方法
    (3)根据参数的类型确定最终要调用的方法
     	 首先: 做类型完全匹配 
     	 其次: 完全匹配的找不到,再做自动类型提升的匹配
/*
	需求:定义多个求和方法

	注意:重载方法只限定参数列表不同
*/
public class MethodOverLoad {
    public static void main(String[] args) {
        //打印/输出调用方法: 传递常量
        System.out.println(getSum(10,20));
        System.out.println(getSum(10,20,30));
        System.out.println(getSum(10.0,20.0));
        System.out.println(getSum(10.0,20.0,30.0));
    }

    //1.定义一个获取两个int数字之和的方法
    public static int getSum(int a, int b) {
        System.out.println("两个int的求和方法");
        return a + b;
    }

    //2.定义一个获取三个int数字之和的方法
    public static int getSum(int a, int b,int c) {
        System.out.println("三个int的求和方法");
        return a + b + c;
    }

    //3.定义一个获取两个double数字之和的方法
    public static double getSum(double a, double b) {
        System.out.println("两个double的求和方法");
        return a + b;
    }

    //4.定义一个获取三个double数字之和的方法
    public static double getSum(double a, double b,double c) {
        System.out.println("三个double的求和方法");
        return a + b + c;
    }
}
4、方法重载的注意事项
方法重载中参数列表不同有哪些情况?
	1.参数数量不同
    2.参数类型不同
    3.多个类型,顺序不同
    
以下方法均能构成方法重载

public class OverLoadNotice {
    public static void main(String[] args) {
        method(10,10.0);
    }

    //1.此方法只有一个int类型参数
    public static void method(int a) {

    }
    //2.此方法只有两个int类型参数
    //方法2和方法1参数的数量是不同的,可以构成重载
    public static void method(int a,int b) {

    }
    //3.此方法只有一个double类型参数
    //方法3和方法2参数的数量是不同的,可以构成重载
    //方法3和方法1参数虽然都是只有一个,但是类型不同,可以构成重载
    public static void method(double a) {

    }

    //4.此方法有一个int类型参数和一个double类型参数
    public static void method(int a,double b){

    }
    //5.此方法有一个double类型参数和一个int类型参数
    //方法5和方法4,虽然参数都是2个,但是类型的顺序不同
    public static void method(double a,int b){
    }
}
方法重载与哪些因素无关?
	1.与参数名称无关
    2.与返回值类型无关
    3.与修饰符无关

总结:
    在多个方法同名的前提下,
    只看多个方法的参数(除了名称以外)有区别,就构成重载
    
以下方法均不构成重载

public class OverLoadNotice {
    public static void main(String[] args) {

    }

    //1.此方法只有一个int类型参数
    public static void method(int a) {

    }
    //2.此方法只有一个int类型参数
    //方法2和方法1,只有参数的名称不同,无法构成重载
    /*public static void method(int num) {

    }*/
    //3.此方法只有一个int类型参数
    //方法3和方法1,只有返回值类型不同,无法构成重载
    /*public static int method(int a) {
        return 0;
    }*/

    //4.此方法只有一个int类型参数
    //方法4和方法1,只有修饰符不同,无法构成重载
    /*void method(int a) {

    }*/
}
2、方法的参数传递
1、概念:
知识回顾:
	形式参数: 定义方法时,()中定义的的变量
	实际参数: 调用方法时,()中传入给方法的数值/变量

当我们要调用一个方法时,我们会把指定的数值,传递给方法中的参数(定义方法时()中定义的变量),
这样方法中的参数就拥有了这个指定的值,可以使用该值,在方法中运算了。这种传递方式,我们称为参数传递

2、基本类型作为方法参数传递
/*
    基本数据类型作为方法参数
    注意:
        1.基本类型变量: 保存的是具体的数据值
        2.基本类型变量作为形式参数,
            形式参数的改变,不会影响实际参数


    基本类型变量作为形式参数:
        定义方法时,()中定义的参数属于基本类型

    不会影响实际参数: 调用方法时,()中给出的参数
 */
public class Demo02BaseVar {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        System.out.println("a="+a);//10
        System.out.println("b="+b);//20
        //调用方法
        change( a , b );
        //调用change方法后,a和b仍然为10和20
        System.out.println("a="+a);//10
        System.out.println("b="+b);//20
    }

    public static void change(int a, int b) {
        System.out.println("a="+a);//10
        System.out.println("b="+b);//20
        a = a*10;
        b = b*10;
        System.out.println("a="+a);//100
        System.out.println("b="+b);//200
    }
}

在这里插入图片描述

3、引用类型作为方法参数传递
/*
    引用数据类型作为方法参数
        注意:
            1.引用类型变量: 保存的是对象在堆内存空间的地址值,进行参数传递的时候,传递的也是地址值(也是值传递)
            2.引用类型变量作为形式参数,通过形式参数找到对应的堆内存空间,修改堆内存空间的内容之后,
            
                通过实际参数看到的一定是修改后的堆内存空间的内容

                引用类型作为形式参数,形式参数的改变,会影响实际参数
                
        数组:
            1.数组也是一种引用类型: 数组名称保存的也是数组在堆内存空间的地址值
            2.数组作为方法参数或者返回值: 传递的都是数组在堆内存空间的地址值

 */
public class RefVar {
    public static void main(String[] args) {
        int[] arr = { 10 , 20 };
        //System.out.println(arr);//数组名称: 保存数组在内存中的地址值[I@1540e00a]
        System.out.println("arr[0]="+arr[0]);//10
        System.out.println("arr[1]="+arr[1]);//20
        //调用方法
        change( arr );
        //调用change方法后,a和b进行了变更100,200
        System.out.println("arr[0]="+arr[0]);//100
        System.out.println("arr[1]="+arr[1]);//200
    }

    public static void change(int[] arr ) {
        System.out.println("arr[0]="+arr[0]);//10
        System.out.println("arr[1]="+arr[1]);//20
        arr[0] = arr[0]*10;
        arr[1] = arr[1]*10;
        System.out.println("arr[0]="+arr[0]);//100
        System.out.println("arr[1]="+arr[1]);//200
    }
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值