美文网首页
Java 基础 14 方法的重载 与 方法参数类型详解

Java 基础 14 方法的重载 与 方法参数类型详解

作者: 小熊先生很不开心 | 来源:发表于2018-01-27 21:40 被阅读34次

1.1 方法重载的概述和特点

  • 方法重载概述

    • 在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可。
  • 方法重载特点

    • 与返回值类型无关,只看方法名和参数列表
    • 在调用时,虚拟机通过参数列表的不同来区分同名方法

1.1.1 案例代码

package com.itheima_03;
/*
 * 方法重载:在同一个类中,出现了方法名相同的情况。
 * 
 * 方法重载的特点:
 *      方法名相同,参数列表不同。方法重载与返回值无关。
 * 
 *      参数列表不同:
 *          参数的个数不同。
 *          参数对应的数据类型不同。
 * 
 * 注意事项:
 *      在调用方法的时候,java虚拟机会根据方法名及参数列表的不同来区分方法。
 */
public class MethodDemo {
    public static void main(String[] args) {
        //定义两个变量
        int a = 10;
        int b = 20;
        
        //求和
        int result = sum(a,b);
        System.out.println("result:"+result);
        
        //定义变量
        int c = 30;
        //int result2 = sum2(a,b,c);
        int result2 = sum(a,b,c);
        System.out.println("result2:"+result2);
    }
    
    /*
    public static int sum(int x,int y) {
        return x + y;
    }
    */
    
    public static float sum(float a,float b) {
        return a + b;
    }
    
    //求三个数据的和
    /*
    public static int sum2(int a,int b,int c) {
        return a + b + c;
    }
    */
    public static int sum(int a,int b,int c) {
        return a + b + c;
    }
    
    //求两个数据的和
    public static int sum(int a,int b) {
        /*
        int c = a + b;
        return c;
        */
        
        return a + b;
    }
}

1.2 方法重载练习之比较两个数据是否相等

1.2.1代码案例

package com.itheima_03;
/*
 * 需求:比较两个数据是否相等。
 * 参数类型分别为两个byte类型,两个short类型,两个int类型,两个long类型,
 * 并在main方法中进行测试
 */
public class MethodTest {
    public static void main(String[] args) {
        //System.out.println(compare(10, 20));
        
        //System.out.println(compare((byte)10, (byte)20));
        
        //System.out.println(compare((short)10, (short)20));
        
        System.out.println(compare(10L, 20L));
    }
    
    /*
     * 两个byte类型
     * 
     * 两个明确:
     *      返回值类型:boolean
     *      参数列表:byte a,byte b
     */
    public static boolean compare(byte a,byte b){
        /*
        if(a == b) {
            return true;
        }else {
            return false;
        }
        */
        System.out.println("byte");
        return a == b;
    }
    
    //两个short类型
    public static boolean compare(short a,short b){
        System.out.println("short");
        return a == b;
    }
    
    //两个int类型
    public static boolean compare(int a,int b){
        System.out.println("int");
        return a == b;
    }
    
    //两个long类型
    public static boolean compare(long a,long b){
        System.out.println("long");
        return a == b;
    }
}

2.1 方法中参数传递

2.1.1 方法参数是基本类型的情况和图解

  方法的参数是基本类型的时候:

  • 形式参数的改变不影响实际参数。
  • 形式参数:用于接收实际数据的变量
  • 实际参数:实际参与运算的变量

2.1.1.1 代码案例

public class ArgsDemo {
    public static void main(String[] args) {
        // 定义变量
        int a = 10;
        int b = 20;
        System.out.println("a:" + a + ",b:" + b);// a:10,b:20
        change(a, b);
        System.out.println("a:" + a + ",b:" + b);// a:10,b:20
    }

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

}

2.1.1.2方法的形式参数是基本类型图解

Parameter_Diagram.png

2.1.2 方法参数是引用类型的情况和图解

2.1.2.1代码案例

package com.itheima;
/*
 * 基本数据类型作为参数传递,形式参数的改变不影响实际参数
 * 引用数据类型作为参数传递,形式参数的改变直接影响实际参数
 */
public class ArgsDemo2 {
    public static void main(String[] args) {
        int[] arr = { 1, 2, 3, 4, 5 };
        for (int x = 0; x < arr.length; x++) {
            System.out.println(arr[x]);//1,2,3,4,5
        }
        change(arr);
        for (int x = 0; x < arr.length; x++) {
            System.out.println(arr[x]);//1,4,3,8,5
        }
    }

    public static void change(int[] arr) {
        for (int x = 0; x < arr.length; x++) {
            //如果数组元素是偶数,值就变成了以前的2倍
            if (arr[x] % 2 == 0) {
                arr[x] *= 2;
            }
        }
    }

}

2.1.2.2方法的形式参数是引用类型图

Parameter_Diagram01.png

2.2 方法操作数组练习

2.2.1方法练习之数组遍历

  需求:把遍历数组改进为方法实现,并调用方法

2.2.2代码案例

package com.itheima;
/*
 * 需求:把遍历数组改进为方法实现,并调用方法
 */
public class MethodTest {
    public static void main(String[] args) {
        //定义数组
        int[] arr = {11,22,33,44,55};
        
        //调用方法
        //printArray(arr);
        
        //我们已经实现了需求,但是我觉得这个效果不好看,我想要如下的效果可以吗
        //[元素1, 元素2, 元素3, ...]
        //我们的结果应该是这样的:[11, 22, 33, 44, 55]
        printArray(arr);
    }
    
    /*
     * 遍历数组的方法。
     * 
     * 两个明确:
     *      返回值类型:void
     *      参数列表:int[] arr
     */
    /*
    public static void printArray(int[] arr) {
        for(int x=0; x<arr.length; x++) {
            System.out.println(arr[x]);
        }
    }
    */
    public static void printArray(int[] arr) {
        System.out.print("[");
        for(int x=0; x<arr.length; x++) {
            if(x == arr.length-1) {
                //判断是否是最后一个元素
                System.out.print(arr[x]);
            }else {
                System.out.print(arr[x]+", ");
            }
            
        }
        System.out.println("]");
    }
}

2.2.3方法练习之数组获取最值

   需求:把获取数组最值改进为方法实现,并调用方法.

2.2.4 代码案例

package com.itheima;
/*
 * 需求:把获取数组最值改进为方法实现,并调用方法
 */
public class MethodTest2 {
    public static void main(String[] args) {
        //定义数组
        int[] arr = {24,36,90,75,81};
        
        //调用方法
        int max = getMax(arr);
        
        //输出结果
        System.out.println("max:"+max);
    }
    
    /*
     * 数组获取最值的方法
     * 
     * 两个明确:
     *      返回值类型:int
     *      参数列表:int[] arr
     */
    public static int getMax(int[] arr) {
        //定义参照物
        int max = arr[0];
        
        //遍历,获取元素,进行比较
        for(int x=1; x<arr.length; x++) {
            if(arr[x] > max) {
                max = arr[x];
            }
        }
        
        return max;
    }
}

相关文章

  • Java 基础 14 方法的重载 与 方法参数类型详解

    1.1 方法重载的概述和特点 方法重载概述在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型...

  • java中的重载和typescript中的重载

    一、 java中重载 重载规则 被重载的方法必须改变参数列表(参数个数或类型不一样);被重载的方法可以改变返回类型...

  • 重载和重写的区别

    重载:java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数类型、参数个数和返回类型...

  • 方法重载

    方法重载 21. 辨别方法重载 在调用重载方法时,编译器会根据方法的参数个数、参数类型和方法属性(const 方法...

  • Java学习笔记(一)—— 基础概念篇

    1. 方法重载 在Java中通过在类中写多个方法,这类方法的方法名相同,方法的参数列表不同(参数的个数和参数类型的...

  • Java编程思想读书笔记第五章: 初始化和清理

    方法的重载 重载方法可以通过参数列表进行区分,包括参数的类型,数量不同,如下所示 参数类型为基本类型,如果形参类型...

  • jvm是如何实现方法调用的

    重载与重写 重载 在java中如果出现了多个名字相同。并且参数类型相同的方法,那么它们无法通过编译,如果我们想要在...

  • 方法的定义与使用(方法重载)

    方法重载 方法重载指的是方法名称相同,参数的类型或个数不同。范例:实现方法重载 范例:观察如下程序

  • NO.16 方法的重载

    重载:方法名相同,参数列表不同,与返回值类型无关 重载的分类: 1、参数个数不同 2、参数类型不同...

  • 第31节:Java基础-类与对象

    前言 Java基础-类与对象,方法的重载,构造方法的重载,static关键字,main()方法,this关键字,包...

网友评论

      本文标题:Java 基础 14 方法的重载 与 方法参数类型详解

      本文链接:https://www.haomeiwen.com/subject/lcyoaxtx.html