2.2 表达式
Groovy提供大量适用于数值类型的运算符,包括常见的算术运算符、比较运算符、位运算符,以及其他各种类型的运算符。表达式(expression)通常用来描述某些计算行为,由运算符和操作数组成。算术运算符(arithmetic operator)包括加法(+)、减法(-)、乘法(*)和除法(/)。Groovy同样也支持取模运算符,用百分号表示(%);取模运算用来计算两个整数相除的余数。表2-1列举适用于整数的各种算术运算符。
请注意,两个整数的除法运算通常会产生一个浮点数,即使其结果可能是一个整数。举例来说,表达式6/3的结果是浮点数2.0,而不是整数2。
表2-1 整数运算符
表达式 | 调用方法 | 结果 |
5+3 | 5.plus(3) | 8 |
5-3 | 5.minus(3) | 2 |
5*3 | 5.multiply(3) | 15 |
5/3 | 5.divide(3) | 1.6666666667 |
5%3 | 5.mod(3) | 2 |
上面的这些运算符也适用于两个浮点数的运算,对应结果如表2-2所示。接下来的表会说明两个浮点数的取模操作。
表2-2 浮点数运算符
表达式 | 调用方法 | 结果 |
5.0+3.0 | 5.0.plus(3.0) | 8.0 |
5.0-3.0 | 5.0.minus(3.0) | 2.0 |
5.0*3.0 | 5.0.multiply(3.0) | 15.0 |
5.0/3.0 | 5.0.divide(3.0) | 1.6666666667 |
同上,除了取模运算符之外,Groovy的算术运算也适用于整数和浮点数的组合。表2-3给出一些范例。
表2-3 混合运算
表达式 | 调用方法 | 结果 |
5+3.2 | 5.plus(3.2) | 8.2 |
5.6 + 3 | 5.6.plus(3) | 8.6 |
5 - 3.2 | 5.minus(3.2) | 1.8 |
5.6 - 3 | 5.6.minus(3) | 2.6 |
5 * 3.2 | 5.multiply(3.2) | 16.0 |
5.6 * 3 | 5.6.multiply(3) | 16.8 |
5 / 3.2 | 5.divide(3.2) | 1.5625 |
5.6 / 3 | 5.6.divide(3) | 1.8666666667 |
如上述几个表所示,不管整数组合,还是整数和浮点数组合,除法运算通常都会得到相同的结果。下面所有组合的结果都是2.6:
13.0/5
13/5.0
13/5
为了获得两个整型值相除的整数部分,必须调用intdiv方法:
13.intdiv(5)
该表达式的结果是整数2。
使用取模运算符(%)可以得到两个整数操作数相除的余数,因此,
13%5 结果值为3
15%5 结果值为0
请注意,对一个浮点数求模,或者对一个含有浮点数参数的整数求模都是非法的。因此,表达式13.0%5.0,13.0%5,13%5.0都会提示mod方法被错误地调用。