zoukankan      html  css  js  c++  java
  • 可变参数列表

    package variablearglist.one;
    
    public class Main {
        public static void variablearglist(Object... os){
            System.out.print("[");
            for (Object i : os) {
                System.out.print(i + ",");
            }
            System.out.println("]");
        }
    
    //  public static void variablearglist(int... is) {
    //      System.out.print("[");
    //      for (int i : is) {
    //          System.out.print(i + ",");
    //      }
    //      System.out.println("]");
    //  }
    
        public static void main(String[] args) {
            System.out.println("多参数输出:");
            variablearglist(1,2,3,4,5);
            int[] intArray=new int[]{1,2,3,4,5};
            System.out.println("基本类型数组输出:");
            variablearglist(intArray);
            Integer[] intObjArray=new Integer[]{
                    new Integer(0),new Integer(1),new Integer(2)
            };
            System.out.println("包装类型数组输出:");
            variablearglist(intObjArray);
            /*
             * Output:
             * 多参数输出:
             * [1,2,3,4,5,]
             * 基本类型数组输出:
             * [[I@24065c4,]
             * 包装类型数组输出:
             * [0,1,2,]
             */
        }
    
    }
    

    注:如果参数列表是Object… os且输入是多参数列表,则编译器会将多个基本类型元素包装为相应包装类数组(见 多参数输出),再传参;如果参数列表是Object… os且输入是基本类型数组(见 基本类型数组输出),则编译器无法转换,会将整个数组看成一个参数传入;如果参数列表是Object… os且输入是引用类型数组,则直接传参(见 包装类型数组输出)。

    package variablearglist.one;
    
    public class Main {
    //  public static void variablearglist(Object... os){
    //      System.out.print("[");
    //      for (Object i : os) {
    //          System.out.print(i + ",");
    //      }
    //      System.out.println("]");
    //  }
    
        public static void variablearglist(int... is) {
            System.out.print("[");
            for (int i : is) {
                System.out.print(i + ",");
            }
            System.out.println("]");
        }
    
        public static void main(String[] args) {
            System.out.println("多参数输出:");
            variablearglist(1,2,3,4,5);
            int[] intArray=new int[]{1,2,3,4,5};
            System.out.println("基本类型数组输出:");
            variablearglist(intArray);
    //      Integer[] intObjArray=new Integer[]{
    //              new Integer(0),new Integer(1),new Integer(2)
    //      };
    //      System.out.println("包装类型数组输出:");
    //      variablearglist(intObjArray);
            /*
             * Output:
             * 多参数输出:
             * [1,2,3,4,5,]
             * 基本类型数组输出:
             * [1,2,3,4,5,]
             */
        }
    
    }
    

    注:如果参数列表是int… is且输入是多参数列表,则编译器会将多个基本类型元素包装为相应基本类型数组(见 多参数输出),再传参;如果参数列表是int… is且输入是基本类型数组(见 基本类型数组输出),则直接传参;同第一段代码对比,若输入类型为基本类型数组时,可变参数列表必须为对应基本类型加…若为Object…则编译器会将输入的基本类型数组看为一个元素传参。

    package variablearglist.one;
    
    public class Main {
        public static void variablearglist(Object... os){
            System.out.print("[");
            for (Object i : os) {
                System.out.print(i + ",");
            }
            System.out.println("]");
        }
    
        public static void variablearglist(int... is) {
            System.out.print("[");
            for (int i : is) {
                System.out.print(i + ",");
            }
            System.out.println("]");
        }
    
        public static void main(String[] args) {
            System.out.println("多参数输出:");
            variablearglist(1,2,3,4,5);//The method variablearglist(Object[]) is ambiguous for the type Main
            int[] intArray=new int[]{1,2,3,4,5};
            System.out.println("基本类型数组输出:");
            variablearglist();//The method variablearglist(Object[]) is ambiguous for the type Main
        }
    }

    注:下面两行代码:

    variablearglist(1,2,3,4,5);
    variablearglist();

    会有编译错误,编译器无法区分,调用的是哪一个方法。其中,第二行代码编译错误可以通过定义一个无参重载方法来解决。可变参数列表尽量少用(容易混淆,且方法的参数列表不够清晰,则会导致重载方法变得复杂)。

  • 相关阅读:
    解决在cmd命令下不能输入中文方法
    报错注入
    html表单中的name属性和value属性
    xss漏洞
    DVWA-xss反射型(跨站脚本漏洞)
    DVWA-brute force
    owsap top 10 2017(十大web安全应用程序安全)
    sqli_labs less-5
    盲注
    c++ 类
  • 原文地址:https://www.cnblogs.com/wjc920/p/9256173.html
Copyright © 2011-2022 走看看