Groovy:三元运算符表示""为空

mar*_*ann 1 null groovy ternary-operator

def nullString = "String is NOT null"

def check = (nullString != null) ? nullString : "String is null"
def check2 = nullString ? nullString : "String is null"
def check3 = nullString ?: "String is null"

println check 
println check2
println check3
Run Code Online (Sandbox Code Playgroud)

告诉我,如果我错了,但上面这三个三元语句都应该做同样的事情,即如果nulString不为null,则打印出"String is not null".如果nullString为null,则打印出"String is null".

而且我认为你们都同意,如果我初始化一个像nullString =""这样的变量,它就不是空的.仅仅因为""不是空的.

但是当使用nullString =""测试上面的代码时,只有第一个打印出"String is not null".另外两个将""解释为null.这是为什么?

(抱歉我的英文,我希望你明白我想说的话)