ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

isEmpty 和 isBlank 到底有啥区别?

isEmpty 和 isBlank 到底有啥区别? 大家好我是Java1234_小锋老师。写表单校验、接口参数检查时这两个方法名字很像用起来却容易踩坑。这篇文章用几个小例子帮你一次搞懂。先说一句结论isEmpty只看长度isBlank还会把空格当成空。就这么简单。但空格这个细节正是很多人写 bug 的源头。三种常见的空日常开发里字符串大概分三类类型例子人眼感受真·空字符串啥也没有纯空格 看起来也是空的有内容的字符串 hello 明显有字isEmpty和isBlank对这三类的判断结果不一样下面展开说。isEmpty 是什么判断字符串长度是否为 0。null→ 通常抛异常或返回true看具体库的实现→true →false它有长度只是全是空格abc→false一句话只要字符个数大于 0就不算 empty。isBlank 是什么判断字符串是否没有有效内容——空字符串、纯空格都算 blank。null→ 通常视为 blank→true →trueabc→false abc →false中间有字母就不 blank 了一句话trim 之后长度为 0就算 blank。一张表看懂区别输入值isEmptyisBlanknull视库而定视库而定✅ true✅ true ❌ false✅ true hi ❌ false❌ false看到 那一行了吗这是唯一的分水岭。代码实战JavaApache Commons Langimportorg.apache.commons.lang3.StringUtils;publicclassEmptyBlankDemo{publicstaticvoidmain(String[]args){// 空字符串System.out.println(StringUtils.isEmpty());// trueSystem.out.println(StringUtils.isBlank());// true// 纯空格 —— 关键差异在这里System.out.println(StringUtils.isEmpty( ));// falseSystem.out.println(StringUtils.isBlank( ));// true// 有内容System.out.println(StringUtils.isEmpty(hi));// falseSystem.out.println(StringUtils.isBlank(hi));// false}}JavaSpring 框架Spring 的StringUtils思路一样只是包名不同importorg.springframework.util.StringUtils;publicclassSpringDemo{publicstaticvoidmain(String[]args){System.out.println(StringUtils.hasLength());// false类似 isEmpty 取反System.out.println(StringUtils.hasText( ));// false类似 isBlank 取反// hasText 有实际文字内容空格不算}}自己手写一个 isBlank帮助理解原理/** * 手写 isBlank理解底层逻辑 */publicstaticbooleanisBlank(Stringstr){if(strnull||str.isEmpty()){returntrue;}// 逐个字符检查是否都是空白for(inti0;istr.length();i){if(!Character.isWhitespace(str.charAt(i))){returnfalse;}}returntrue;}前端 JavaScript 对照JS 没有内置isBlank但思路可以照搬// 类似 isEmptyconstisEmpty(str)strnull||strundefined||str.length0;// 类似 isBlankconstisBlank(str)strnull||str.trim().length0;console.log(isEmpty( ));// falseconsole.log(isBlank( ));// true什么时候用哪个用流程图梳理一下日常场景不允许允许空格作为有效值是否收到一个字符串参数允许用户只输入空格吗?用 isBlank / hasText只关心长度是否为0?用 isEmpty / hasLength直接业务逻辑处理表单昵称、评论、搜索关键词等文件路径拼接、协议字段等极少数场景经验法则场景推荐用户输入的昵称、评论、搜索词isBlank接口必填参数校验isBlank只判断而不关心空格isEmpty拿不准默认用isBlank更符合用户直觉大多数业务场景用户敲几个空格提交你不希望当成已填写——所以isBlank是更常用的选择。小结isEmpty长度为 0 才算空 不算。isBlank空字符串 纯空格都算没内容。表单校验、参数检查 → 优先isBlank。两者不是谁更高级而是语义不同用错了就会在空格输入上出 bug。下次 Code Review 看到isEmpty校验用户输入不妨多问一句空格算不算填了答案往往决定了该用哪个。如果这篇文章帮到了你欢迎收藏下次判空不再纠结。
返回列表