在使用可变参数进行传值的时候判null的时候的坑
class Test{
String param = null;
public void test(String... param){
System.out.println(this.param == null )//输出结果为false
}
}
如上代码 如果将一个字符串类型的变量和null进行比较会是false
class Test{
String param[] = null;
public void test(String... param){
System.out.println(this.param == null )//输出结果为true
}
}
如上代码 如果将一个字符串数组变量赋值为null,输出结果就是true
结果分析:
如果将一个非数组类型的变量当做实参传递给一个可变参数的形参后它实际上就变成了一个集合,理解为与数组差不多。如果将这个数组名直接进行比较会使用这个数组的内存地址进比较它当然不为null所以就是param == null为false,如果将param[0] == null 就会使true的。
但是将一个数组类型的变量当做实参就不会出现这个情况的,因为这个数组本身就是null,所以param == null就是true。