zoukankan      html  css  js  c++  java
  • groovy–运算符重载

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

    下面的表格描述了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()方法等价。

    比如:

    1 def a = null
    2 def b = "foo"
    3  
    4 assert a != b
    5 assert b != a
    6 assert a == null

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

    另外在不同类型的对象之间比较的时候,强制类型转换规则使用于把数字类型转换为最大的数字类型。所以下面的代码是有效的:

    1 Byte a = 12
    2 Double b = 10
    3  
    4 assert instanceof Byte
    5 assert instanceof Double
    6  
    7 assert a > b
     
  • 相关阅读:
    工作杠杆
    AngularJS 自定义指令directive 介绍
    CentOS卸载OpenJDK并安装Sun JDK
    jQuery Datatable 表格插件
    ZTree 使用范例
    jQuery UI 实例 – 切换(Toggle)
    curl 抓取页面信息
    报警平台
    PHP imagechar() 图形验证码 字体太小问题
    Discuz!在线中文分词服务
  • 原文地址:https://www.cnblogs.com/rollenholt/p/3349047.html
Copyright © 2011-2022 走看看