赋值运算符 "=" 是您将遇到的最常用的运算符。使用该运算符可以将其右侧的值赋给其左侧的操作数:
result = num1 + num2;
days = ["Mon","Tue","Wed","Thu","Fri"]; |
使用算术运算符可以执行加、减、乘和除运算。mod
运算符用一个操作数除以另一个操作数并将余数作为结果返回。
+ (加运算符)
- (减运算符)
* (乘运算符)
/ (除运算符)
mod (求余运算符) |
以下脚本提供了一些示例:
var result = 1 + 2; // result is now 3
println(result);
result = result - 1; // result is now 2
println(result);
result = result * 2; // result is now 4
println(result);
result = result / 2; // result is now 2
println(result);
result = result + 8; // result is now 10
println(result);
result = result mod 7; // result is now 3
println(result); |
您还可以结合使用算术运算符与赋值运算符来创建复合赋值。例如,result += 1;
和 result = result+1;
都会将 result
的值加 1。
var result = 0;
result += 1;
println(result); // result is now 1
result -= 1;
println(result); // result is now 0
result = 2;
result *= 5; // result is now 10
println(result);
result /= 2; // result is now 5
println(result); |
唯一不能按照此方式使用的算术运算符是 mod
。例如,如果您希望将 result
除以 2,然后将余数重新赋给其自身,则需要编写:result = result mod 2;
大多数运算符都需要两个操作数,而一元运算符仅使用一个操作数来执行诸如按一递增/递减某个值、对某个 数字求反或对布尔值求反之类的操作。
- 一元减运算符;对某个数字求反
++ 递增运算符;按 1 递增某个值
-- 递减运算符;按 1 递减某个值
not 逻辑求补运算符;对布尔值求反 |
以下脚本用于测试一元运算符:
var result = 1; // result is now 1
result--; // result is now 0
println(result);
result++; // result is now 1
println(result);
result = -result; // result is now -1
println(result);
var success = false;
println(success); // false
println(not success); // true |
递增/递减运算符可以在操作数之前(前缀)或之后(后缀)应用。代码 result++;
和 ++result;
都将导致 result
的值加 1。二者之间的唯一区别就是前缀版本 (++result
) 得到的是递增后的值,而后缀版本 (result++
) 得到的是原始值。(您可以通过以下方法来记忆:++result
先执行递增再获得值,而 result++
先获得值再执行递增。)如果您只是执行简单的递增/递减,则选择哪个版本都一样。但是,如果您将该运算符作为较大表达式的一部分进行使用,则选择不同的版 本会对结果产生很大的影响。
以下脚本说明了这种区别:
var result = 3;
result++;
println(result); // result is now 4
++result;
println(result); // result is now 5
println(++result); // result is now 6
println(result++); // this still prints 6!
println(result); // but the result is now 7 |
相等和关系运算符确定一个操作数是大于、小于、等于还是不等于另一个操作数。
== 等于
!= 不等于
> 大于
>= 大于或等于
< 小于
<= 小于或等于 |
以下脚本用于测试这些操作数:
def num1 = 1;
def num2 = 2;
println(num1 == num2); // prints false
println(num1 != num2); // prints true
println(num1 > num2); // prints false
println(num1 >= num2); // prints false
println(num1 < num2); // prints true
println(num1 <= num2); // prints true |
条件与 (and) 和条件或 (or) 运算符用于对两个布尔表达式执行条件运算。这些运算符会表现出“短路”行为,也就是说,仅在必要时才计算第二个操作数:例如,对于 and
运算,如果第一个表达式的结果为 false,将不计算第二个表达式。对于 or
运算,如果第一个表达式的结果为 true
, 将不计算第二个表达式。
以下脚本定义了 username
和 password
变量,然后输出各个条件的匹配项,从而说明了这些运算符的用法:
def username = "foo";
def password = "bar";
if ((username == "foo") and (password == "bar")) {
println("Test 1: username AND password are correct");
}
if ((username == "") and (password == "bar")) {
println("Test 2: username AND password is correct");
}
if ((username == "foo") or (password == "bar")) {
println("Test 3: username OR password is correct");
}
if ((username == "") or (password == "bar")) {
println("Test 4: username OR password is correct");
} |
输出为:
Test 1: username AND password are correct
Test 3: username OR password is correct
Test 4: username OR password is correct |
instanceof
运算符将对象与指定的类型相比较。您可以使用该运算符来确定某个对象是否为特定类的实例:
def str1="Hello";
println(str1 instanceof String); // prints true
def num = 1031;
println(num instanceof integer); // prints true |
在本教程的最后一课中深入了解类和继承后,您将发现该运算符非常有用。
来源:oschina
链接:https://my.oschina.net/u/10803/blog/2842