Groovy: Groovy中的true跟false
Groovy: Groovy中的true和false
Groovy中的true和false
这里说Groovy的true和false其实不太准确, Groovy中的true和false两个关键字和Java一样都是boolean类型。 这里要说的是Groovy中的条件判断为真和假的情况。在Java中条件判断只能是boolean类型。在java中要宽泛的多:
boolean类型的true和false:
空字符串被判断为false,非空字符串被判断为true:
数值0被判断为false, 非0被判断为true:
空的List和迭代器被判断为false, 否则为true:
空的Map被判断为false,非空Map为true:
空的对象引用为false,非空为true:
匹配的正则表达式为true, 不匹配为false:
这里要特别注意的一点,上面除了boolean类型以外都是“被判断为true和false”,而不是boolean类型的true和false,也就是说
Groovy中的true和false
这里说Groovy的true和false其实不太准确, Groovy中的true和false两个关键字和Java一样都是boolean类型。 这里要说的是Groovy中的条件判断为真和假的情况。在Java中条件判断只能是boolean类型。在java中要宽泛的多:
boolean类型的true和false:
def b1 = false def b2 = true assert !b1 assert b2
空字符串被判断为false,非空字符串被判断为true:
def s1 = '' def s2 = 'abc' assert !s1 assert s2
数值0被判断为false, 非0被判断为true:
def n1 = 0 def n2 = 42 assert !n1 assert n2
空的List和迭代器被判断为false, 否则为true:
def l1 = [] def l2 = [1, 3, 6] assert !l1 assert l2 def i1 = l1.iterator() def i2 = l2.iterator() assert !i1 assert i2
空的Map被判断为false,非空Map为true:
def m1 = [:] def m2 = ['key': 'value'] assert !m1 assert m2
空的对象引用为false,非空为true:
def o1 def o2 = new Expando(name: 'groovy') assert !o1 assert o2
匹配的正则表达式为true, 不匹配为false:
def ma1 = "groovy" =~ /java/ def ma2 = "groovy" =~ /groovy/ assert !ma1 assert ma2
这里要特别注意的一点,上面除了boolean类型以外都是“被判断为true和false”,而不是boolean类型的true和false,也就是说
assert null == false // 输出false assert null == true // 输出false