Java方法(二)重载、命令行传参、可变参数

Java方法(二)

方法的重载

  1. 什么是重载:

    重载就是在一个类中,有相同的函数名称,但形参不同的函数

    这里的不同包括数量不同、类型不同等等

  2. 重载的规则:

    • 方法名称必须相同
    • 参数列表必须不同(个数不同类型不同参数排列顺序不同等等)
    • 方法的返回类型可以相同也可以不同
    • 仅仅返回类型不同不足以成为方法的重载(只是返回类型不同的话编辑会报错)
  3. 重载在编辑器中如何运行:

    当方法名称相同时,编辑器会根据方法的参数个数、参数类型、参数排列顺序等去逐个匹配,用来选择对应的方法。

    如果找不到对应的方法,就会报错。

  4. 举例:

    //在CDemo02里写上相同名字的重载方法
    public class CDemo02 {
        public static int abc(int a){
            return a*3;
        }
        //个数不同
        public static int abc(int a,int b){
            return a+b;
        }
        //和上面的类型不同
        public static int abc(char a,int b){
            System.out.println(a);
            return b;
        }
        //和上面的顺序不同
        public static int abc(int a,char b){
            System.out.println(b);
            return a;
        }
        //个数和返回值不同(只有返回值不同不行)
        public static void abc(int a,int b,int c){
            System.out.println("a="+a+",b="+b+",c="+c);
        }
    }
    //在CDemo01里使用CDemo02里的方法
    public class CDemo01 {
        public static void main(String[] args) {
            int a=3,b=4,c=5;
            int x1=0,x2=1;
            //调用abc(int a)方法
            System.out.println(CDemo02.abc(a));
            //调用abc(int a,int b)方法
            System.out.println(CDemo02.abc(a,b));
            //调用abc(char a,int b)方法
            x1=CDemo02.abc('s',a);
            System.out.println("x1="+x1);
            //调用abc(int a,char b)方法
            x2=CDemo02.abc(b,'t');
            System.out.println("x2="+x2);
            //调用abc(int a,int b,int c)方法
            CDemo02.abc(a,b,c);
        }
    }
    //输出:
    9
    7
    s
    x1=3
    t
    x2=4
    a=3,b=4,c=5
    

命令行传参

  1. 需要运行一个程序时再传递给它消息,需要传递命令行参数给main()函数实现

  2. 先在Demo01文件里写出以下代码

    package com.sxw;
    public class Demo01 {
        public static void main(String[] args) {
            for(int i=0;i<args.length;i++){
                System.out.println("args["+i+"]:"+args[i]);
            }
        }
    }
    
  3. 在cmd下执行某个java文件:

    • 在src文件夹下启动cmd,输入java com.sxw.Demo01(Demo01是文件名,com和sxp是所在包)(失败的话先用javac生成class文件)
    • 之后输入字符串就能实现对main函数传参

可变参数

  1. 从 java1.5开始支持可变参数

  2. 在方法声明中,在指定参数类型后加一个省略号(...)

  3. 可变参数指可以往一个变量里输入多个(不限量)数据形成数组

  4. 一个方法只能指定一个可变参数,它必须是方法的最后一个参数。任何普通参数都必须在它之前声明

  5. 举例一:

    public class Demo02 {
        public static void main(String[] args) {
            Demo02 demo02 = new Demo02();
            //因为i为可变数据,所以可以随意输入int类型的元素个数,最终都会存在i数组中
            demo02.abc(1,2,3,4,5);
            demo02.abc(1,2);
            demo02.abc(1,1,1,1,1,1,1,1,1,1,1,1);
        }
        //将i定义为int的可变参数,则i中的数据为int数组,要通过数组的方式输出
        public void abc(int ... i){
            //由于每次输入的元素个数不同所以不知道每次i数组的长度(元素个数)
            //所以调用i数组的length()方法来得到i每次的长度,通过for循环输出i数组中的所有元素
            for (int j=0;j<i.length;j++){
                System.out.print(i[j]+" ");
            }
            System.out.println("");
        }
    }
    //输出:
    1 2 3 4 5 
    1 2 
    1 1 1 1 1 1 1 1 1 1 1 1 
    

    举例二:

    public class Demo03 {
        public static void main(String[] args) {
            Demo03 demo03 = new Demo03();
            demo03.abc2('A',2,4,2,5);
            demo03.abc2('B',1,2,3,4);
        }
        //一个方法里可变参数只能有一个
        //可变参数,它必须是方法的最后一个参数
        //例如abc2方法的可变参数i必须放在最后,不能放在char a之前
        public void abc2(char a,int ... i){
            System.out.print(a+" ");
            for (int j=0;j<i.length;j++){
                System.out.print(i[j]+" ");
            }
            System.out.println("");
        }
    }
    //输出:
    A 2 4 2 5 
    B 1 2 3 4 
    
    
    
posted @ 2022-01-16 21:17  史小鹏  阅读(88)  评论(0)    收藏  举报