Java之可变参数知多少?

作者: 程就人生 | 来源:发表于2019-06-08 20:52 被阅读0次
可变参数简介

可变参数 是Java 1.5版本新增的功能,又被称为Varargs机制,Varargs是variable number of arguments的简称,意思为参数个数可变函数,其展现形式为 参数参数类型 之间加上 ...,也就是在 参数类型 的后面加三个点。参数有实参和形参之分,方法上的参数是形参,可变参数是针对形参的。

使用场景一

从前台传递参数到后台,比如传递一个字符串数组;
原始的写法:

/**
     * 用数组接收参数
     * @param str
     * @return
     *
     */
    @PostMapping("/test/array1")
    public Object testArray1(@RequestParam(value="str")String[] str){
        return str;
    }

用可变参数可以这样写:

/**
     * 用可变参数接收参数
     * @param str
     * @return
     *
     */
    @PostMapping("/test/array2")
    public Object testArray2(@RequestParam(value="str")String... str){
        return str;
    }
使用场景二

后台方法间的调用,如果参数类型一样,参数个数不同,则可以使用可变参数,这样就省去了写多个类似的方法;

/**
     * 可变参数测试
     * @param argo
     *
     */
    public static void main(String[] argo){
        sum(1);
        sum(1,2);
        sum(1,2,3);
        sum(3,2,4);
    }
    
    /**
     * 可变参数使用
     * @param number
     *
     */
    public static void sum(int... number){
        int count = 0;
        for(int n : number){
            count+=n;
        }
        System.out.println(count);
    }

输出结果为:

1
3
6
9
注意事项

如果有多个参数时,可变参数一定要放在最后面,特别是相同参数类型的参数;

/**
     * 可变参数测试
     * @param argo
     *
     */
    public static void main(String[] argo){
        testStr("ming","zhang");
        testStr("ming","zhang","足球");
        testStr("ming","zhang","足球","跑步");
               //也可以像上面的例子一样传递数组
        String[] aa = new String[3];
        aa[0] = "足球";
        aa[1] = "跑步";
        aa[2] = "音乐";
        testStr("ming","zhang",aa);
    }
    
    /**
     * 测试多个相同类型的参数
     * @param lastName
     * @param firstName
     * @param hobby
     *
     */
    public static void testStr(String lastName,String firstName,String... hobby){
        System.out.println("firstName:" + firstName + ", lastName:" + ",hobby:" + StringUtils.join(hobby));
    }

输出结果为:

firstName:zhang, lastName:,hobby:
firstName:zhang, lastName:,hobby:足球
firstName:zhang, lastName:,hobby:足球,跑步
firstName:zhang, lastName:,hobby:足球,跑步,音乐

在一个类中,相同的可变参数不要重复出现,以免让编译器傻傻分不清,像下面这种情况,编译器就直接报错了。


图-1

总结
可变参数需要用在合适的场合,但是也不能滥用,如果定义的方法自己都含含糊糊,界限不够清晰,编译器也会分不清。使用可变参数,最初还是因为,从前台往后台传递字符串数组总是报错,这才使用了可变参数。可变参数是一种机制,也是一个小小的技巧,技巧用对了,才能发挥作用。

微信扫一扫,关注程就人生公众号

相关文章

  • Java之可变参数知多少?

    可变参数简介 可变参数 是Java 1.5版本新增的功能,又被称为Varargs机制,Varargs是variab...

  • java之可变参数

    可变参数可以解决代码冗余的问题。如:public int zzj(int i, int j);public int...

  • C++语言之this原理与友元函数友元类

    1.C++可变参数。java 可变参数 int...C++ 可变参数 ... 需要引入头文件 stdarg.h头文...

  • java函数

    可变参数 test1.java

  • [转]谈一谈java的可变参数

      Java1.5增加了新特性:可变参数:适用于参数个数不确定,类型确定的情况,java把可变参数当做数组处理。 ...

  • Java 可变参数

    概述 Java1.5增加了新特性:可变参数:适用于参数个数不确定,类型确定的情况,java把可变参数当做数组处理(...

  • 6.java可变参数(转)

    Java1.5增加了新特性:可变参数:适用于参数个数不确定,类型确定的情况,java把可变参数当做数组处理。注意:...

  • java可变参数

    就是数组参数的简写方式。 例如: int[] arr={1,2,3,4}; system.out.println(...

  • Java 可变参数

    虽然从1.5中提供了Varargs(variable arguments)机制,允许直接定义能和多个实参相匹配的形...

  • java 可变参数

    可变参数 可变参数是参数的个数为任意个,参数的类型不能改变 一个方法中,只能有一个可变参数 当一个方法中有多个参数...

网友评论

    本文标题:Java之可变参数知多少?

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