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());
}
}