如果判断一个字符串是否为空?一不小心判断错了,就报出了空指针异常,着实是头疼。
一个String类型的变量str,如何判空哪?
str==null || str.length()==0 还是 str.length()==0 || str==null?
首先,对于一个变量判断是不是空,要先判断这个对象存不存,是不是在内存中分配了一块区域?再判断这块区域的大小。如果对于一个内存中没有分配空间的对象,调用它的方法,就会报空指针异常。
所以,最终的方式是:
先判断是不是对象,如果是,判断长度是不是0,如果不是,就直接判定为空。而逻辑运算符||,具有短路效果的运算符,正好可以满足这个需求:
a||b,假如a为true,则判断b,b也为true,则表达式为true;如果a为false,则表达式直接为false,不会再判断后面的b的结果,这样也不会产生空指针异常。
综上,最终的结果是:
判断字符串为空: str==null || str.length()==0
判断字符串不是空: str!=null && str.length()!=0