9、操作符重载
l Groovy支持操作符重载,使得数值、集合、Map和其它种类的数据结构更容易使用
l 在Groovy中的各种操作符被映射到对象中调用的正规方法
Operator | Method |
a + b | a.plus(b) |
a - b | a.minus(b) |
a * b | a.multiply(b) |
a / b | a.divide(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.equals(b) |
a != b | ! a.equals(b) |
a === b | Java中的 a == 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 |
l 注意:所有比较操作符已经对null处理了,以避免抛出java.lang.NullPointerException
a = null
b = "foo"
assert a != b
assert b != a
assert a == null
l 在不同类型的数值比较之前,Groovy会自动将数值的类型转换为更大范围的数值类型,因此,下面的例子是有效的:
Byte a = 12
Double b = 10
assert a instanceof Byte
assert b instanceof Double
assert a > b