帮我解读下这段程序,有点看不明白

 /**
     * 验证字符串,返回true为无效
     * @param modify
     * @param text
     * @return
     */
    public static boolean invalidText(boolean modify,String text){
        boolean invalid =  modify && StringUtil.isEmptyText(text);
        invalid = invalid || ((!modify) && StringUtil.isBlank(text));
        return invalid;
    }

程序的功能是验证是否为空的,分为插入(modify=false)和更新(modify=true)验证,
我想知道插入和更新这个验证有啥区别?

从逻辑来看,两种情况下,对于这样的字符串“”二者都会返回true,也就是无效的字符串。
但是
modify = false (插入)情况下,字符串仅有空格符的话如“ ”,也是认为是无效的。
modify = true (更新)情况下,字符串仅有空格符的话如“ ”,是认为有效的。
就这个差别。

StringUtil 这个是StringUtils吧

modify 为 false

invalid = stringutil.isblank(text)
检测是否空白字段如 "", " " 之类
为 true
invalid = StringUtil.isEmptyText(text)
检测是否空 text == null

public static boolean invalidText(boolean modify,String text){
boolean invalid = modify && StringUtil.isEmptyText(text);
boolean boolflag=(!modify) && StringUtil.isBlank(text);
invalid = invalid || boolflag;
return invalid;
}
更新的时候判断StringUtil.isEmptyText(text)
插入的时候判断StringUtil.isBlank(text)

区别在isEmptyText 和 isBlank 上,插入(modify=false) 是要验证 isEmptyText,更新(modify=true)是要验证isBlank。

希望帮到你。

boolean modify -- 传入的参数,boolean -- 更新时为true,插入时为false
text 不为空, modify 为true
更新的时候判断 true || false 返回值true
text 不为空, modify 为false
插入的时候判断 false || true 返回值true
text 为空, modify 为true
更新的时候判断 false || true 返回值true
text 为空, modify 为false
插入的时候判断 false || false 返回值false
逻辑自己最好校验下....

 /**
     * 验证字符串,返回true为无效
     * @param modify
     * @param text
     * @return
     */
    public static boolean invalidText(boolean modify,String text){
        boolean invalid =  modify && StringUtil.isEmptyText(text);
        invalid = invalid || ((!modify) && StringUtil.isBlank(text));
        return invalid;
    }

    参数:false,""
    值:invalid=false,
    返回:false
    =================
    false,"xxxxx"
    invalid=false,
    false
    =================
    true,""
    invalid=true
    true
    =================
    true,"xxxxx"
    invalid=false,
    false

另外,你要检查isEmptyText和isBlank具体内容是什么,因为还有:

" x x x  "
"xxx  "
" xxx"
"    "

这几种是否为空的判断,具体要看这两个方法是怎么实现的.

分析以下逻辑表达式
图片说明
当A为真时,表达式的值由B决定与C无关,当A为假时,表达式的值由C决定与A无关
我的理解是,这段代码结果与它一致:

 if(modify) return StringUtil.isEmptyText(text);
 else return StringUtil.isBlank(text);

没修改并且值不为空,或者修改且值为空时,返回true,其他情况 返回false

这段程序的关键点在于StringUtil.isEmptyText(text)与StringUtil.isBlank(text)),观察StringUtils的源码可以发现:
1.public static boolean isEmpty(String str) {
return str == null || str.length() == 0;
}
StringUtils.isEmpty()方法判断当前字符串的两个依据:一是str为null,二是str的长度等于0。
2.public static boolean isBlank(String str) {
int strLen;
if (str == null || (strLen = str.length()) == 0)
return true;
for (int i = 0; i < strLen; i++)
if (!Character.isWhitespace(str.charAt(i)))
return false;
return true;
}
StringUtils.isBlank()对于字符串的校验分为两个部分:一是与isEmpty()方法相同的判断方法,二是判断该str中存在的字符是否为空白字符。