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
目录
相关文章
|
7天前
|
IDE 开发工具 数据安全/隐私保护
Kotlin语法 - 类成员
本教程详细讲解Kotlin语法,适合深入学习。若需快速掌握,推荐“简洁”系列教程。内容涵盖类成员、函数与方法、属性访问控制及初始化等。类成员包括方法和属性,函数独立于类,属性访问通过getter/setter实现,支持延迟初始化。
22 3
|
9天前
|
数据安全/隐私保护 Kotlin
Kotlin - 类成员
Kotlin - 类成员
16 5
|
15天前
|
数据安全/隐私保护 Kotlin
Kotlin14 - 类成员
Kotlin14 - 类成员
35 5
|
6月前
|
C++
c++类和对象(+十运算符重载一贱值运算符重载讲解
c++类和对象(+十运算符重载一贱值运算符重载讲解
28 1
|
6月前
|
算法 程序员 编译器
【C++ 运算符重载】C++中的运算符重载:深入探讨++和--运算符
【C++ 运算符重载】C++中的运算符重载:深入探讨++和--运算符
45 0
|
6月前
|
Dart
Dart 运算符重载,详细介绍
Dart 运算符重载,详细介绍 Dart 支持运算符重载,它允许我们重载内置的运算符以执行自定义操作。在 Dart 中,我们可以通过实现一些特定的方法来重载运算符。
|
11月前
|
Kotlin
kotlin的..<运算符
kotlin的..<运算符
42 0
|
安全 Java 编译器
Kotlin 学习笔记(一)—— 基本类型、函数、lambda、类与对象的写法
Kotlin 作为 Android 开发的首选语言,其基础语法和特性需要重点学习。本文概括总结了 Kotlin 的基本类型、关键字、函数、闭包、高阶函数、类与对象等核心知识点,并给出示例代码进行讲解。
186 0
Kotlin 学习笔记(一)—— 基本类型、函数、lambda、类与对象的写法
|
Java
Groovy - 操作符之 “<<”
Groovy - 操作符之 “<<”
199 0