JDK1.5新特性3-可变参数

来源:互联网 发布:软件会员卡积分下载 编辑:程序博客网 时间:2024/05/16 15:06

可变参数在方法中的具体格式:

 修饰符 返回值类型 方法名(数据类型... 变量名){}

通过实例明确概念要点:

  • (1) 定义方法时,不确定该定义多少个参数,用可变参数。可变参数个数取值范围为自然数。
public class ChangeableArgs{    public static void main(String[] args) {        dealArray();        dealArray(1);        dealArray(1, 2);    }    public static void dealArray(int... arr) {        for (int i : arr)             System.out.print(i + " ");        System.out.println();    }}

输出:

1 1 2
  • (2) 可变参数本质上是一个数组。
public class ChangeableArgs{    public static void main(String[] args) {    }    public static void dealArray(int... arr) {    }    public static void dealArray(int[] arr) { // 此处编译报错:“Duplicate method dealArray”,即“重复的方法定义”    }}
  • (3) 可变参数是兼容数组类参数的,但是数组类参数却无法兼容可变参数。
public class ChangeableArgs{      public static void main(String args[]){          int[] arr= {1, 2, 3};          dealArray(arr);  // 通过编译,正常运行      }      public static void dealArray(int... arr){          for (int i : arr)              System.out.print(i +" ");          System.out.println();      }  }  

public class ChangeableArgs{      public static void main(String args[]){          dealArray(1,2,3);  // 编译错误      }      public static void dealArray(int[] arr){          for (int i : arr)              System.out.print(i +" ");          System.out.println();      }  }  
  • (4) 如果一个方法有可变参数,并且有多个参数,那么,可变参数必须是最后一个
public class ChangeableArgs {      public static void main(String args[]){       }      public static void dealArray(int count, int... arr){                }      public static void dealArray(int... arr, int count){//编译报错,可变参数类型应该作为参数列表的最后一项      }  } 
  • (5) 可变参数匹配优先级最低
public class ChangeableArgs {      public static void main(String args[]){          dealArray(1, 2);   // 最终打印2    }      public static void dealArray(int... arr){          System.out.println("1");      }      public static void dealArray(int count1, int count2){          System.out.println("2");      }  }  

参考文章

微wx笑的Java方法的可变参数个数

0 0
原创粉丝点击