isEmpty和isNull()区别:
转自:https://cloud.tencent.com/developer/article/1171797?from=article.detail.1007616
一个NULL字符串一定是一个空串,
一个空串未必是一个NULL字符串。
例如:
QString().isNull(): //结果为true
QString().isEmpty(); //结果为true
QString("").isNull(); //结果为false
QString("").isEmpty(); //结果为true
批注: 一个NULL字符串就是使用QString的默认构造函数或者使用(const char*)0作为参数的构造函数创建的字符串对象。
QString((const char*)0).isNull(); //结果为true
====================================================
(二)转自:https://baijiahao.baidu.com/s?id=1708577968844567937&wfr=spider&for=pc
1)isEmpty
判断字符串是否为空字符串,只要有一个任意字符(包括空白字符)就不为空。
来看 isEmpty 的方法源码:
public static boolean isEmpty(CharSequence cs) {return cs == null || cs.length() == 0;}
看见没,这个方法只判断了是为为 null 或者长度为 0。
意味着,如果用户输入 " " 等空白字符,这个方法就不通过了,结果就是不为空了。
如验证输入以下内容:

2、isBlank
判断字符串是否为空字符串,全部空白字符也为空。
来看 isBlank 的方法源码:
public static boolean isBlank(CharSequence cs) {int strLen = length(cs); if (strLen == 0) { return true; } else { for(int i = 0; i < strLen; ++i) { if (!Character.isWhitespace(cs.charAt(i))) { return false; } } return true; }}
看见没,第 7 行,只要有一个字符不为空白字符就返回 false,也就是说,如果全部都为空白字符就返回 true,也就是全部空白字符也为空。
如验证输入以下内容:

这时候,如果用户输入 " " 等空白字符,这个方法也返回空了,这也是大部分业务场景下我们期望出现的结果。
isEmpty 和 isBlank 怎么选?
很明显,我们要判断一个字符串为空,绝大部分情况下 "空白字符" 也要为空的,严谨来说肯定要用 isBlank,虽然 isEmpty 也可以,但如果在最前端的接口不被拦截掉,请求到了后端的服务、数据库,就可能会造成压力,甚至是系统异常,这是完全可以避免的。
但万事也没有绝对,如果你的程序可以接受任意字符,包括 "空白字符",那就要选择 isEmpty,isBlank 会拦截所有空白字符,就达不到要求。
===============================================================================
(三) 转自:https://blog.csdn.net/qq_26620955/article/details/79555385?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1-79555385-blog-111601108.pc_relevant_default&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1-79555385-blog-111601108.pc_relevant_default&utm_relevant_index=1
- isEmpty:已经初始化的对象,内容为空。
null或 str.length()==0
-
StringUtils.isEmpty(null) = true
-
StringUtils.isEmpty("") = true
-
StringUtils.isEmpty(" ") = false//注意在 StringUtils 中空格作非空处理
-
StringUtils.isEmpty(" ") = false
-
StringUtils.isEmpty("bob") = false
-
StringUtils.isEmpty(" bob ") = false
-
StringUtils.isBlank(null) = true
-
StringUtils.isBlank("") = true
-
StringUtils.isBlank(" ") = true
-
StringUtils.isBlank(" ") = true
-
StringUtils.isBlank("\t \n \f \r") = true //对于制表符、换行符、换页符和回车符
-
StringUtils.isBlank() //均识为空白符
-
StringUtils.isBlank("\b") = false //"\b"为单词边界符
-
StringUtils.isBlank("bob") = false
-
StringUtils.isBlank(" bob ") = false
抛NullpointException
因为那个时候JDK不知道obj是什么东西,所以根本没办法调用

浙公网安备 33010602011771号