美文网首页
groovy-运算符

groovy-运算符

作者: 望月成三人 | 来源:发表于2019-01-14 13:30 被阅读6次

    Groovy操作符

    Groovy支持运算符重载,各种运算符被映射到普通的java对象的方法调用,这就使得开发者可以利用运算符重载的优势来编写自己的Java或者groovy对象。

    Operator Method
    a + b a.plus(b)
    a – b a.minus(b)
    a * b a.multiply(b)
    a ** b a.power(b)
    a / b a.div(b)
    a % b a.mod(b)
    a | b a.or(b)
    a & b a.and(b)
    a ^ b a.xor(b)
    a++ or ++a a.next()
    a– or –a a.previous()
    a[b] a.getAt(b)
    a[b] = c a.putAt(b, c)
    a << b a.leftShift(b)
    a >> b a.rightShift(b)
    switch(a) { case(b) : } b.isCase(a)
    ~a a.bitwiseNegate()
    -a a.negative()
    +a a.positive()

    另外需要注意的是下面的所有的操作符,在遇到null的时候,都不会抛出java.lang.NullPointerException

    Operator Method
    a == b a.equals(b) or a.compareTo(b) == 0 **
    a != b ! a.equals(b)
    a <=> b a.compareTo(b)
    a > b a.compareTo(b) > 0
    a >= b a.compareTo(b) >= 0
    a < b a.compareTo(b) < 0
    a <= b a.compareTo(b) <= 0

    需要注意的是,“==”操作符并不总是和equals()方法等价。

    • 比如:
    def a = null
    def b = "foo"    
    assert a != b
    assert b != a
    assert a == null
    

    无论a或者b谁是null,都不会抛出java.lang.NullPointerException。

    • 另外在不同类型的对象之间比较的时候,强制类型转换规则使用于把数字类型转换为最大的数字类型。所以下面的代码是有效的:
    Byte a = 12
    Double b = 10    
    assert a instanceof Byte
    assert b instanceof Double   
    assert a > b
    

    更多参考

    相关文章

      网友评论

          本文标题:groovy-运算符

          本文链接:https://www.haomeiwen.com/subject/ocbddqtx.html