时间:2021-05-20
String的null或空值的判断处理
笔者在开发过程中,常常碰到过下面这些错误的用法:
1,错误用法一:
2,错误用法二:
3,错误用法三:
我们来解说一下:
上述错误用法1是初学者最容易犯,也最不容易被发现的错误,因为它们的语法本身没问题,Java编译器编译时不报错。但这种条件可能在运行时导致程序出现bug,永远也不会为true,也就是时说,if块里的语句永远也不会被执行。
上述用法二,用法三 的写法,是包括很多Java熟手也很容易犯的错误,为什么是错误的呢?也许你会感到纳闷。
对,它们的写法本身没错,但是,少了一个null判断的条件,试想,如果name=null的情况下,会发生什么后果呢?后果是,你的程序将抛出NullPointerException异常,系统将被挂起,不再提供正常服务。
当然,如果之前已经对name作了null判断的情况例外。
正确的写法应该先加上name != null的条件,如例:
if (name != null && !name.equals("")) {//do something}或者
if (!"".equals(name)) {//将""写在前头,这样,不管name是否为null,都不会出错。//do something}
下面,我们举一个简单的例子:
TestNullOrEmpty.java
public class Test { public static void main (String args[]){ String value = null; testNullOrEmpty(value); value = ""; testNullOrEmpty(value); value = " "; testNullOrEmpty(value); value = "hello me"; testNullOrEmpty(value); } static void testNullOrEmpty(String value){ if(value == null){ System.out.println("value is null"); } else if ("".equals(value)){ System.out.println("value is blank but not null"); } else { System.out.println("value is \"" + value + "\""); } if (value == "") { //NG 错误的写法 //别用这种写法 } }}编译执行:
比较String地址相等
总结:
1.new出来的String是重新分配内存,字符串不共享,new出来的多个之间也不共享。
2.通过字符串函数操作拼接或者截取到的字符串跟静态字符串变量也是不共享的。
3.通过加号得到的字符串有两种情况。
A "he"+"llo"是静态字符串,是共享的
B String a = "He"; a+"llo"不是静态字符串,是不共享的
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
判断某字符串是否为空,为空的标准是str==null或str.length()==01.下面是StringUtils判断是否为空的示例: StringUtil
1.logic:emptylogic:empty标签是用来判断是否为空的。如果为空,该标签体中嵌入的内容就会被处理。该标签用于以下情况:当Java对象为null
isset判断变量是否已存在empty判断变量是否为空或为0is_null判断变量是否为NULL变量emptyis_nullisset$a=””truefals
IOS开发之对象为空的判断(nil、null)详解前言:在开发中,会遇到很多空的情况,有时候取得对象(null),还有时候会得到的情况,我们需要判断是否为空,进
在Javascript中判断相等关系有双等号(==)和三等号(===)两种。其中双等号(==)是值相等,而三等号(===)是严格相等(值及类型是否完全相等)。因