javase -- 可变形参


可变形参(varargs).

JDK1.5

编译器认为:String[] arr == String ... arr

  • String[] 做形参只能传入 数组
  • String...做形参可以传入数组,无参,有个数变化的参数,但是只能有一个,且在参数列表的末尾
  • 参数传递很多时或者个数不固定,但参数类型一致时,可以使用可变参数
  • 提倡尽量不用可变参数编程
public static void main(String[] args) {
    String[] strs = {"测试","可变形参"};
    printArg();//可以不传参 strs.length = 0
    printArg(strs);//可以传数组
    printArg("String ... ","测试","可变形参");//可传多个参数

    printArg(null);// strs = null
}

public static void printArg(String...strs) {
    if(strs != null && strs.length != 0) {
        System.out.println(Arrays.toString(strs));
        System.out.println("有传入参数\n");
    }else {
        System.out.println("没有传入参数\n");
    }                                                                           
}

/*
    没有传入参数

    [测试, 可变形参]
    有传入参数

    [String ... , 测试, 可变形参]
    有传入参数

    没有传入参数
*/

文章作者: liuminkai
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 liuminkai !
评论
 上一篇
javase -- 值传递和引用传递 javase -- 值传递和引用传递
实际上,java方法参数传递只有值传递,只不过我们所说的引用传递 传递的是 对象的引用(地址值) 这个博客很详细 值传递(pass by value)是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会
2020-07-28
下一篇 
javase -- jvm中内存存储的数据 javase -- jvm中内存存储的数据
堆heap : 将new出来的结构(对象和数组)都放在堆空间里,包含对象里面的属性(非static) 方法区:类的加载信息、常量池、静态域 栈stack(java中提到的栈):JVM中的虚拟机栈,局部变量都在这里面
2020-07-27
  目录