Scala运算符–算术,关系,逻辑,按位,赋值
今天,我们将研究各种类型的scala运算符。
运算符告诉编译器执行特定的数学或者逻辑运算。
Scala运算符
Scala编程语言支持以下类型的运算符。
- 算术运算符
- 关系运算符
- 逻辑运算符
- 按位运算符
- 赋值运算符
让我们逐个示例地进行介绍。
Scala算术运算符
算术运算符包括加法,减法,乘法,除法和模数之类的基本运算。
支持的算术运算符为+,-,*和/。
| Operator | Description |
| + | Adds two operands |
| – | Subtracts the second operand from the first |
| * | Multiplies two operands |
| / | Divides the numerator by the denominator |
| % | Returns the remainder |
这是scala算术运算符的示例。
object Arithmetic {
def main(args:Array[String]) {
var x = 40;
var y = 20;
println("Addition of x + y = " + (x + y));
println("Subtraction of x - y = " + (x - y));
println("Multiplication of x * y = " + (x * y));
println("Division of x/y = " + (x/y));
println("Modulus of x % y = " + (x % y));
}
}
我们正在使用main方法定义一个对象算术,该方法接受数组的String类型的参数。
x和y变量分别声明为值40和20。
我们通过执行x + y,x-y,x * y,x/y,x%y来打印结果。
请注意,在Scala中,与Java不同,我们可以直接创建对象而无需先创建类。
在Scala shell中键入Arithmetic.main(null)创建对象算术后,运行上述代码。
输出:
scala> Arithmetic.main(null) Addition of x + y = 60 Subtraction of x - y = 20 Multiplication of x * y = 800 Division of x/y = 2 Modulus of x % y = 0
Scala关系运算符
关系运算符包括==,!=,>,<,> =和<=。
下表显示了scala中的关系运算符。
| Operator | Description |
| == | Checks whether the two operands are equal or not and returns true if they are equal. |
| != | Checks if the two operands are equal or not and returns true if they are not equal. |
| > | Checks if the first operand is greater than the second and returns true if the first operand is greater than the second operand. |
| < | Checks if the first operand is lesser than the second and returns true if the first operand is lesser than the second operand. |
| >= | Checks whether the first operand is greater than or equal to the second operand and returns true if the first operand is greater than or equal to the second operand. |
| <= | Checks whether the first operand is lesser than or equal to the second operand and returns true if the first operand is lesser than or equal to the second operand. |
考虑一个用于scala中关系运算符的示例。
object Relational {
def main(args:Array[String]) {
var x = 10;
var y = 20;
println("Equality of x == y is : " + (x == y));
println("Not Equals of x != y is : " + (x !=y));
println("Greater than of x > y is : " + (x > y));
println("Lesser than of x < y is : " + (x < y));
println("Greater than or Equal to of x >= y is : " + (x >= y));
println("Lesser than or Equal to of x <= y is : " + (x <= y));
}
}
我们使用main方法定义一个对象Relational,该方法接受数组的String类型的参数。
x和y变量分别声明为值10和20。
我们通过执行x == y,x!= y,x> y,x <y,x> = y和x <= y的操作来打印结果。
通过键入Relational.main(null)运行以上代码
输出:
scala> Relational.main(null) Equality of x == y is : false Not Equals of x != y is : true Greater than of x > y is : false Lesser than of x < y is : true Greater than or Equal to of x >= y is : false Lesser than or Equal to of x <= y is : true
Scala逻辑运算符
逻辑运算符包括!,||和&&。
下表列出了支持的逻辑运算符。
| Operator | Description |
| ! | Logical NOT operand which reverses the logical state of the operand.Returns true if the condition is satisfied |
| && | Logical AND operand which returns true if both the operand are non zero |
考虑一个scala逻辑运算符的示例。
object Logical {
def main(args: Array[String]) {
var x = false
var y = true
println("Logical Not of !(x && y) = " + !(x && y) );
println("Logical Or of x || y = " + (x || y) );
println("Logical And of x && y = " + (x &&y) );
}
}
我们正在使用main方法定义一个逻辑对象,该方法接受数组的String类型的参数。
x和y是布尔变量,其值分别为false和true。
我们通过执行!(x && y),x ||打印结果。
y和x && y。
通过键入Logical.main(null)运行以上代码
输出:
scala> Logical.main(null) Logical Not of !(x && y) = true Logical Or of x || y = true Logical And of x && y = false
Scala中的按位运算符
按位运算符包括&,|,~,^,<<,>>和>>>。
下表显示了Scala支持的按位运算符。
| Operator | Description |
| & | Binary AND operator copies the bit to the result if the operator exists in both the operands. |
| ~ | Binary Ones Complement Operator is unary and has effects of the flipping bits. |
| ^ | Binary XOR operator copies if the bit is set in one of the operand but not both. |
| << | Binary Left Shift operator.The left operand value is moved left by the number of bits specified in the right operand. |
| >> | Binary Right Shift operator.The left operand value is moved right by the number of bits specified by the right operand. |
| >>> | Shift right zero fill operator. The left operands value is moved right by the number of bits specified by the right operand and shifted values are filled with zeros. |
考虑一个Scala中按位运算符的示例。
object Bitwise {
def main(args: Array[String]) {
var x = 16;
var y = 12;
var z = 0;
z = x & y;
println("Bitwise And of x & y = " + z );
z = x | y;
println("Bitwise Or of x | y = " + z );
z = x ^ y;
println("Bitwise Xor of x ^ y = " + z );
z = ~x;
println("Bitwise Ones Complement of ~x = " + z );
z = x << 2;
println("Bitwise Left Shift of x << 2 = " + z );
z = x >> 2;
println("Bitwise Right Shift of x >> 2 = " + z );
z = x >>> 2;
println("Bitwise Shift Right x >>> 2 = " + z );
}
}
我们使用main方法定义一个按位对象,该方法接受数组的String类型的参数。
x和y是分别具有值16和12的变量。
我们通过执行所有按位运算来打印结果。
通过键入Bitwise.main(null)运行程序
输出:
scala> Bitwise.main(null) Bitwise And of x & y = 0 Bitwise Or of x | y = 28 Bitwise Xor of x ^ y = 28 Bitwise Ones Complement of ~x = -17 Bitwise Left Shift of x << 2 = 64 Bitwise Right Shift of x >> 2 = 4 Bitwise Shift Right x >>> 2 = 4
Scala赋值运算符
Scala赋值运算符包括=,+ =,-=,* =,/=,%=,<< =,>> =,&=,| =和^ =。
下表显示了赋值运算符的列表。
| Operator | Description |
| = | Assigns value from right side operand to left side operand |
| += | Adds right operand to left operand and assigns the result to left operand |
| -= | Subtracts right operand from the left operand and assigns the result to left operand |
| *= | Multiplies right operand with the left operand and assigns the result to the left operand |
| /= | Divides the left operand with the right operand and assigns the result to the left operand |
| %= | Finds the modulus of two operands and assigns the result to left operand |
| <<= | Left shift assignment operator.It left shifts the operand and assigns result to the left operand |
| >>= | Right shift assignment operator.It rights shifts the operator and assigns the value to left operand |
| &= | Bitwise AND assignment operator performs bitwise AND operation and assigns the result to left operand |
| = | |
| ^= | Performs bitwise exclusive OR operation and assigns result to the left operand |
考虑一个Scala中赋值运算符的示例。
object Assignment {
def main(args: Array[String]) {
var x = 20;
var y = 30;
var z = 0;
z = x + y;
println("z= x+ y = " + z );
z+= x ;
println("Add and assignment of z += x = " + z );
z -= x ;
println("Subtract and assignment of z -= x = " + z );
z *= x ;
println("Multiplication and assignment of z *= x = " + z );
x = 20;
z = 15;
z /= x ;
println("Division and assignment of z /= x = " + z );
x = 30;
z = 15;
z %= x;
println("Modulus and assignment of z %= x = " + z );
z <<= 2;
println("Left shift and assignment of z <<= 2 = " + z );
z >>= 2;
println("Right shift and assignment of z >>= 2 = " + z );
z &= x;
println("Bitwise And assignment of z &= 2 = " +z );
z ^= x ;
println("Bitwise Xor and assignment of z ^= x = " + z );
z |= x ;
println("Bitwise Or and assignment of z |= x = " + z );
}
}
我们正在使用main方法定义一个对象Assignment,该方法接受array的String类型的参数。
x和y是变量。
我们正在通过执行所有分配操作来打印结果。
通过绑定Assignment.main(null)运行以上示例
输出:
scala> Assignment.main(null) z= x+ y = 50 Add and assignment of z += x = 70 Subtract and assignment of z -= x = 50 Multiplication and assignment of z *= x = 1000 Division and assignment of z /= x = 0 Modulus and assignment of z %= x = 15 Left shift and assignment of z <<= 2 = 60 Right shift and assignment of z >>= 2 = 15 Bitwise And assignment of z &= 2 = 14 Bitwise Xor and assignment of z ^= x = 16 Bitwise Or and assignment of z |= x = 30

