Object数组与可变参数

Object数组

class A{}
public class Varargs {
   static void PrintArray(Object[] args){
       for(Object obj: args)
           System.out.println(obj + " ");
       System.out.println();
   }
    public static void main(String[] args) {
        Object[] tom = new Object[]{"asdsdad", new Boolean(false), new Integer(47), new Double(11.11)};
        PrintArray(tom);
        PrintArray(new Object[]{
            new Integer(47), new Float(3.14), new Double(11.11)});
        PrintArray(new Object[]{"one", "two", "three"});
        PrintArray(new Object[]{new A(), new SpaceShipControls(), new Flower("呵呵")});
        //如果不重写toString 这里将print出类的名字和对象的地址});
    }
}

Object… args

Object… args表示有若干个Object对象的参数,没有限定的个数。只要是Object都可以调用

public class NewVarargs {
    static void printArray(Object ... args){
        for(Object obj : args){
            System.out.print(obj + " ");
        }
        if(args.length == 0) System.out.println("空空如也");
        System.out.println();
        public static void main(String[] args){
        ...
        }
    }
    public static void main(String[] args) {
        // Can take individual elements:
        printArray(new Integer(47), new Float(3.14), new Double(11.11));
        printArray(47, 3.14f, 11.11);
        printArray(new String("ononosd"), "sad", "??");
        printArray(new A(), new A(), new A());
        printArray(new Object[]{new A(), new SpaceShipControls(), new Flower("呵呵")}); //会输出哈希值
        printArray(); //Empty is OK ⭐️⭐️⭐️
    }

可变参数列表的可变参数为String

public class OptionalTrailingArguments {
    static void f(int required, String ... trailing){
        System.out.print("required" + required + " ");
        for(String s : trailing)
            System.out.print(s + " ");
        System.out.println();
    }
    public static void main(String[] args) {
        f(1, "one");
        f(2, "two", "three");
        f(0);
    }
}

其他类型的可变参数

public class VarargType {
    static void f(Character ... args){
        System.out.println(args.getClass());
        System.out.println("length = " + args.length);
    }
    static void g(int... args){
        System.out.println(args.getClass());
        System.out.println("length = " + args.length);
    }
    public static void main(String[] args) {
        f('a');
        f();
        g(22);
        g(1, 42, 2, 3, 4, 3);
        g();
        System.out.println("int[]: " + new int[0].getClass());
    }
}

猜你喜欢

转载自blog.csdn.net/christianus/article/details/83858756
今日推荐