groovy–运算符重载

摘要:
Groovy支持运算符重载。各种运算符被映射到普通Java对象的方法调用,这允许开发人员使用运算符重载的优点来编写自己的Java或groovy对象。a、 等于ba比较toa˃ba比较o˃0a˃=ba比较o˂=0a˂ba比较o˂0a˂=ba。compareTo˂=0应该注意,“==”运算符并不总是等同于equals()方法=A6Asserta==null无论a或b中的java中谁为null。不会引发lang.NullPointerException。此外,在比较不同类型的对象时,使用转换规则将数字类型转换为最大的数字类型。

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()方法等价。

比如:

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

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

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

1Byte a = 12
2Double b = 10
3 
4assert instanceof Byte
5assert instanceof Double
6 
7assert a > b
 

免责声明:文章转载自《groovy–运算符重载》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇关于接入新浪微博第三方登录在VUE中使用过滤器(Filters)报[Vue warn]: Error in render: "TypeError: Cannot read property 'toFixed' of undefined"解决办法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

【java web】java运行预编译Groovy脚本

在JVM中执行Groovy类有两种方式: 使用Groovy编译全部的*.groovy为java的*.class文件,把这些*.class文件放在java类路径中,通过java类载入器来载入这些类。 通过groovy类载入器在执行时直接载入*.groovy文件并生成对象。在这样的方式下,没有生成不论什么*.class,可是生成了一个java.lang.C...

Groovy脚本-通用SQL开关

备注:使用Groovy语言进行编写,看不懂的同学请先了解Groovy脚本。 Groovy学习地址:https://www.cnblogs.com/tiechui2015/p/10828457.html。 本段程序实现的功能如下: 一、开关的维度是商户、机构、配置代码维度。设置有效标识控制是否生效。 二、采用All代表全商户特殊值,在商户号中配置All则表示...

groovy-语句

groovy语句类似于java语句,但是在groovy中的分号”;”是可选的。比如: 1 def x = [1, 2, 3] 2 println x 3 def y = 5; def x = y + 7 4 println x 5 assert x == 12 而且对于一些方法参数等复杂的事情,我们可以横跨多行:...

groovy-输入输出

Groovy为I/O提供了一系列的helper methods ,所有的这些方法都适用于标准的 Java Reader/Writer ,InputStream/OutputStream 和File 以及URL classes. 闭包的使用可以确保资源被正确的关闭,比如遍历文件的每一行可以使用下面的代码: 1 new File("foo.txt").ea...

Beanshell vs JSR223 vs Java JMeter脚本:性能关闭你一直在等待!

有几个选项可用于执行自定义JMeter脚本并扩展基线JMeter功能。查看最流行的扩展机制,比较性能并分析哪一个是最好的。 这是乐队之战,JMeter风格。 Beanshell V. JSR223 V. Java Request Sampler 在我们之前的帖子中, JMeter Performance和Tuning Tips(由fantastik Phi...

Gradle 自定义插件

使用版本 5.6.2 插件被用来封装构建逻辑和一些通用配置。将可重复使用的构建逻辑和默认约定封装到插件里,以便于其他项目使用。 你可以使用你喜欢的语言开发插件,但是最终是要编译成字节码在 JVM 运行的。 Gradle 有两种插件,脚本插件和二进制插件。 关于插件的介绍,可以参考我的另一篇文章 Gradle 插件 这里讲的自定义插件是二进制插件,二进制插...