可以直接判断 数组为空 || size> 0。
需要先判断是否为空,否则可能会出现空指针异常。
例如:
if(array == null || 0 == array.length) {
...
// 这种写法正确,因为执行到 “0 == array.length”则说明数组不为空,不会产生空指针异常。
}
if (0 == array.length || array == null) {
...
// 这种写法可能会产生空指针异常。
}
//只声明了一数组变量;
int[] array1;
//声明一数组变量并赋值null,array1是一个数组类型的空引用,不指向任何对象;
int[] array1 = null;
//声明并创建一数组对象,长度是0;一个长度为 0 的数组 / 空数组
int[] array2 = new int[0];
//数组里可能只有一个空字符串 "",这时数组长度是 1。这种情况也要注意判断。
if ( arr.length == 1 && arr[ 0 ].equals( "" ) ) {
System.out.println( "输入的数组不能只包含一个空字符串" );
return;
}
假设一个方法返回一个数组,如果它返回null,则调用方法必须先判断是否返回null,才能对放回数组进一步处理,而如果返回空数组即长度为0的数组(new int[0]),则无须null引用检查**。鉴于此,返回数组的方法在没有结果时我们通常返回空数组,而不是null,这样做对于函数调用者的处理比较方便。**
做一个编程题时,在提交代码后老是抛出NullPointerException异常,大概的代码如下:
public ArrayList<Integer> foo(TreeNode root) {
if (root == null){
return null;
}
……
return ...
}
后来改成如下代码就通过了
public ArrayList<Integer> foo(TreeNode root) {
if (root == null){
return new ArrayList<Integer>();
}
……
return ...
}
原因应该是牛客网中的测试代码没有考虑null的情况,希望我们返回的是一个空ArrayList
可以返回null,因为防止NPE是调用者的责任。
返回长度为零的数组或者集合,而不是null。
1、在返回值为数组或者集合时,尽量返回长度为零的数组或者集合,而不是null,这样在调用时就能简化代码,减少不必要的麻烦,并且不必担心NullPointerException异常(除非这对性能会造成很大的影响)。
2、如果返回值为空对象时没有意义的话,就可以考虑直接抛出异常。
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/mingyuli/article/details/120386750
内容来源于网络,如有侵权,请联系作者删除!