转自https://blog.csdn.net/fyfcauc/article/details/37930193
一、有如下两个变量定义:
1 int[] zero = new int[0];
2 int[] n = null;
解释:
在Java中,允许有长度为0的数组。zero是一个长度为0的数组,我们称之为“空数组”,空数组也是一个对象,只是包含元素个数为0。
内存解析:就是zero存放在栈空间,它有指向堆空间的一个对象,该对象的长度为0。
n是一个数组类型的空引用,即n没有指向堆空间的任何一个对象。
二、空指针异常
当用户要传过来一个数组arr之前,在程序部分要判断数组是否为空引用,数组长度是否为0,这里利用短路或“||”运算符。
需要注意的是,一定要先判断数组是否为空引用,再去判断数组长度是否为0,如果反过来,那可能该数组还没有引用对象,你就使用arr.length去判断数组长度是否为0,那么肯定会出现空指针异常。
//arr是一维数组 int[]
if(arr == null || arr.length == 0)
//arr是二维数组 int[][]
if(arr == null || arr.length == 0 || arr[0].length == 0)
版权声明:本文为weixin_42523110原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。