参数类型:参数像是一个占位符。当方法被调用时,传递值给参数。这个值被称为实参或变量。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。
形式参数:在方法被调用时用于接收外界输入的数据
实参:调用方法是实际传给方法的数据
参数列表:当你在编写一个函数时,你不知道函数形参的类型或者是形参的长度时,你就可以使用参数列表来代替。
public void f(Object...objects) {
System.out.println("Object");
System.out.println(objects.length);
}
可变参数
JDK 1.5 开始,Java支持传递同类型的可变参数给一个方法。
在方法声明中,在指定参数类型后加一个省略号(…) 。
一个方法中只能指定一个可变参数,它必须是方法的最后一个参数。任何普通的参数必须在它之前声明。
public class VarargsDemo {
public static void main(String args[]) {
// 调用可变参数的方法
printMax(34, 3, 3, 2, 56.5);
printMax(new double[]{1, 2, 3});
}
public static void printMax( double... numbers) {
if (numbers.length == 0) {
System.out.println("No argument passed");
return;
}
double result = numbers[0];
for (int i = 1; i < numbers.length; i++){
if (numbers[i] > result) {
result = numbers[i];
}
}
System.out.println("The max value is " + result);
}
}
以上实例编译运行结果如下:
The max value is 56.5
The max value is 3.0
什么是类型参数
类型参数就是参数的类型,它接受类作为实际的值
把类型参数化,也就是我们常说的类型参数,可参考泛型
平时我们接触的普通方法的参数,比如public void fun(String s);参数的类型是String,是固定的
现在泛型的作用就是再将String定义为可变的参数,即定义一个类型参数T,比如public static void fun(T t);这时参数的类型就是T的类型,是不固定的
从上面的String和T来看,泛型有着浓浓的多态的味道,但实际上泛型跟多态还是有区别的
从本质上来讲,多态是Java中的一个特性,一个概念,泛型是真实存在的一种类型;
白话一点来说,就是你可以把类型参数看作形参,把实际传入的类看作实参
比如:ArrayList<E>
中的类型参数E看做形参, ArrayList<String>
中的类String看做实参
如果你学过工厂设计模式,那么就可以把这里的ArrayList<E>
看做一个工厂类,然后你需要什么类型的ArrayList,就传入对应的类型参数即可
比如,传入Integer则为ArrayList<Integer>
类
比如,传入String则为ArrayList<String>
类