一、空字符串和null的区别
在Java中,字符串为空有两种情况,一是字符串为null,另一种是字符串为空字符串。这两种情况虽然结果相同,但却存在区别。
空字符串""是一个长度为0的字符串。而null表示不存在对象引用。当一个变量被赋值为null时,意味着这个变量不再指向任何对象,无法调用方法和属性。
为了避免这样的NullPointerException异常,我们需要在使用字符串之前,进行非空判断。
二、使用if语句进行判断
使用if语句进行字符串非空判断是最常见的方法。在if语句中,使用.equals()方法来判断字符串是否为空字符串。如果字符串为null,则先进行null判断。下面是一个范例:
if(str!=null &&!str.equals("")){
//非空字符串处理逻辑
}
在这个范例中,首先判断字符串str是否为null,如果为null则整个条件为false,不会继续执行。其次,使用了字符串的equals()方法,判断字符串str是否为空字符串。如果不为空,则执行非空字符串处理逻辑。
三、使用StringUtils类进行判断
使用StringUtils类可以让非空判断更加简单。StringUtils类是Apache Commons Lang包提供的工具类。通过这个类的isBlank()方法,可以轻松地判断字符串是否为空。下面是一个范例:
if(StringUtils.isNotBlank(str)){
//非空字符串处理逻辑
}
在这个范例中,只需要调用StringUtils类的isBlank()方法,判断字符串是否为空即可。如果字符串不为空,则执行非空字符串处理逻辑。
四、使用Objects类进行判断
在JDK7中,提供了Objects类。通过这个类的isNull()方法,可以轻松地判断一个引用是否为null。如果引用不为null,则调用引用的toString()方法,判断对象转化为字符串后是否为空。
if(!Objects.isNull(str) &&!Objects.toString(str).isEmpty()){
//非空字符串处理逻辑
}
在这个范例中,首先使用Objects类的isNull()方法判断引用str是否为null。如果不为null,则将引用str转化为字符串,使用Objects类的toString()方法。然后调用字符串的isEmpty()方法,判断字符串是否为空。如果不为空,则执行非空字符串处理逻辑。