java中数组为空和数组长度为0的区别(注意是坑) CollectionUtils工具类
https://blog.csdn.net/qq_33146717/article/details/80268688
CollectionUtils
在 import org.apache.commons.collections.CollectionUtils包下面的方法
可以直接判断数组为空 || size> 0
两者如果在一句代码中,则要先判断是否为空,否则可能会出现空指针异常。
eg:
if(array == null || 0 == array.length) {...} //
这种写法正确
,因为执行到 “0 == array.length”则说明数组不为空,不会产生空指针异常。
if (0 == array.length || array == null) {...} // 这种写法可能会产生空指针异常。
例:
int[] n; //只声明了一数组变量;
int[] nil = null; //声明一数组变量,并赋值 null,nil是一个数组类型的空引用,不指向任何对象;
int[] zero = new int[0]; //声明并创建一数组对象,长度是0;
对于上面三条语句,一个比一个做的动作多,系统占用也是后面的多:
语句一变量还没初始化,打印 n 会出错:“可能尚未初始化变量 n”;
语句二虽已初始化,打印“nil.length”会出现异常:NullPointerException;
语句三打印“nil.length”是0,数组内还没有元素。
假设一个方法返回一个数组,如果它返回null,则调用方法必须先判断是否返回null,才能对放回数组进一步处理,而如果返回
空数组
,则无须null引用检查。鉴于此,
返回数组的方法在没有结果时
我们通常返回
空数组,而不是null
,这样做对于函数调用者的处理比较方便。
Java中数组为空和数组长度为0的区别
https://blog.csdn.net/u012156116/article/details/79690277
今天在做题的时候遇到了这个问题,首先
List<List<Integer>> results = new ArrayList<>();
if (nums == null) {
return results;
if (nums.length == 0) {
results.add(new ArrayList<Integer>());
return results;
nums是一个数组,可以看到他们的区别。
int[] array = null; 数组为空,此时array不指向任何对象;
int[] array = new array[0]; 定义一个长度为0的数组;
int[] array = new array[2]; 定义一个长度为2的数组,此时如果数组没有被初始化,默认的值为null;
一般先判断 nums 是否为空,然后再判断长度是否为0,因为可能报空指针异常。
所以如果在一行代码中要同时判断的时候需要这样写:
if(array == null || array.length == 0)
因为 || 是短路或,前面的符合了后面的就不考虑了。
https://www.cnblogs.com/yongh/p/9812596.html
今天在牛客网上做一个编程题时,在提交代码后老是抛出NullPointerException异常,大概的代码如下:
public ArrayList<Integer> foo(TreeNode root) {
if (root == null)
return null;
后来改成如下代码就通过了。
public ArrayList<Integer> foo(TreeNode root) {
if (root == null)
return new ArrayList<Integer>();
具体原因应该是牛客网中的测试代码没有考虑null的情况,希望我们返回的是一个空的ArrayList。
就返回值到底应该是用null还是空集合的问题,查了一些资料:
《阿里巴巴JAVA开发手册》书中表示:可以返回null,因为防止NPE是调用者的责任。
《Effective Java (Third Edition)》书中表示:返回长度为零的数组或者集合,而不是null。
再结合一下别的博客,自己大概总结一下:
1)返回值为null并不会有什么问题,但是在“解引用”(dereference)时,调用者没有对null进行判断就会出现NullPointerException。
2)在返回值为数组或者集合时,尽量返回长度为零的数组或者集合,而不是null,这样在调用时就能简化代码,减少不必要的麻烦,并且不必担心NullPointer异常(除非这对性能会造成很大的影响)。
就对自己以后编程来说,编写方法时,如果返回值是数组或者集合,就尽量返回长度为零的数组或者集合,而不是null。而自己调用方法时,还是要注意对null情况的判断。
此外,如果返回值为空对象时没有意义的话,就可以考虑直接抛出异常。
java中数组为空和数组长度为0的区别(注意是坑) CollectionUtils工具类https://blog.csdn.net/qq_33146717/article/details/80268688CollectionUtils在 import org.apache.commons.collections.CollectionUtils包下面的方法可以直接判断数组为空 ||...
今天在做剑指offer第一题:二维数组的查找时,实现从左下来查找时竟然报出数组越界错误,但是仔细看代码和右上查找时几乎相同。
报错例子是一个二维空数组,我输出它的列长度和行长度才觉得这件事不简单。
对于一个空的二维数组,其行列的长度分别为多少呢?
例如:int arr = {{}};
行长度arr.length 和列长度 arr[0].length 分别为多少?
答案是 1 和 0 。
int...
如果想查找表中的空字符串数组:
方法:可以使用查找数组中的第一个值是否为空字符串
select classify from table where classify[0]='';
想查找表中空数组:
方法:使用size判断数据大小是否为0
select classify from table where size(classify)=0;
......
这多个变量的数据类型要一样,数组既可以存储基本数据类型,也可以存储引用数据类型。
元素都有自己的编号,编号是从0开始的,第一个元素的编号是0,第二个元素的编号1,往后依次加1,最后一个元素的编号是长度减1。
二、数组的定义和初始化
数组的定义
格式1:数据类型[.
判断所有集合内部的元素是否为
空,使用 isEmpty()方法,而不是
size()==0 的方式。
isEmpty不仅可以
判断集合是否为
null,在时间复杂度上也更优秀,isEmpty()方法时间复杂度都是O(1),
size()方法时间复杂度不固定,最坏可能是O(N)
对于ArrayList、LinkedList,
size()与isEmpty()的时间复杂度都是O(1)
1.如果只是对数组进行声明,没有进行创建,则该数组为null,调用length()函数和for函数时都会出现空指针异常,代码和运行结果如下:
package charactor;
//null数组不能使用.length()函数,但是空数组可以,会返回0
public class Test3 {
static int a[];
public static void main(String[...
java的
数组分基本数据类型和引用类型
基本数据类型:如int[] s=new int[10]; 这里面创建了长度为10的整型
数组,并且自动为每个元素创建了对象,即能找到相关地址
引用类型:如写了个class student(){}, 在student[] s=new student[10]
中只是new了
数组空间,我们还要对s[0]-s[9]每一个创建对象,否则
数组为
null。
解决方法:
for(int i=0;i<10;i++)
s[i...
数组(Array)是有序的元素序列。一个长度为0的数组我们称之为“空数组”,空数组是一个真正的对象,只是包含元素个数为0。。
我们可以先做个实验。(本文实验在 64位机测试)
测试空数组
int aa[1];
int bb[0];
printf("aa address %p \r\n",&aa);
printf("aa sizeof %ld \r\n",sizeof(aa));
printf("bb address %
数组为null和长度为0的区别
数组为null
当数组为null的时候,也就是数组的引用并没有指向堆中的空间,Java虚拟机并没有为这个数组分配一段空间。
如下形式:
int[] a = null;//数
S-Ldy:
C语言中的exit()函数
约瑟夫环问题
m0_74719946:
约瑟夫环问题
m0_74719946:
C语言中函数参数传递的三种方式
m0_57786781: