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

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;
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,386评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,142评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,704评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,702评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,716评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,573评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,314评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,230评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,680评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,873评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,991评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,706评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,329评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,910评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,038评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,158评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,941评论 2 355

推荐阅读更多精彩内容

  • Win7下如何打开DOS控制台? a:开始--所有程序--附件--命令提示符 b:开始--搜索程序和文件--cmd...
    逍遥叹6阅读 1,599评论 4 12
  •   引用类型的值(对象)是引用类型的一个实例。   在 ECMAscript 中,引用类型是一种数据结构,用于将数...
    霜天晓阅读 1,056评论 0 1
  • 今天,我帮妈妈整理厨房!上面这张图片是我洗好的碗哦!是不是很干净呢? 洗碗的过程很简单,先把用过...
    5520田欣雨阅读 261评论 0 0
  • What: 一个O2O咨询平台,当你迷茫、遇到困难的时候可以在这里寻找导师进行咨询 How: 导师可以在这个平台上...
    思考者01阅读 431评论 0 2
  • 出来工作,首先要面对的是食和住这两大难题。食、住解决,整个人会轻松一大截。不过,身在北上广深这种一线城市,想住得体...
    PPT控阅读 2,701评论 8 5