目录
运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。
1、算术运算符
(1)算术运算符一览
运算符 | 运算 | 范例 | 结果 |
+ | 正号 | +3 | 3 |
- | 负号 | b=4; -b | -4 |
+ | 加 | 5+5 | 10 |
- | 减 | 6-4 | 2 |
* | 乘 | 3*4 | 12 |
/ | 除 | 5/5 | 1 |
% | 取模(取余) | 7%5 | 2 |
+ | 字符串相加 | “He”+”llo” | “Hello” |
(2)细节说明
-
对于除号“/”,它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分。 例如:var x : Int = 10/3 ,结果是 3
-
当对一个数取模时,可以等价 a%b=a-a/b*b , 这样我们可以看到取模的一个本质运算(和java 的取模规则一样)。
-
注意:Scala中没有++、--操作符,需要通过+=、-=来实现同样的效果
// /
var r1 : Int = 10 / 3 //3
var r2 : Double = 10 / 3 //3.0
var r3 : Double = 10.0 / 3 //3.33333
println("r3=" + r3.formatted("%.2f") ) // 3.33
// %
println(10 % 3) //1
println(-10 % 3) //-1 -> -10 % 3 = (-10) -( -10 / 3) * 3 = -1
println(-10 % -3) //-1 ->-10 % 3 = (-10) -( -10 / -3) * -3 = -1
println(10 % -3) //1
// ++ --
var num1 = 10
num1 += 1
num1 -=1
2、比较运算符(关系运算符)
(1)基本介绍
-
关系运算符的结果都是boolean型,也就是要么是true,要么是false
-
关系表达式 经常用在 if结构的条件中或循环结构的条件中
-
关系运算符的使用和java一样
(2)关系运算符一览
(3)细节说明
-
关系运算符的结果都是Boolean型,也就是要么是true,要么是false。
-
关系运算符组成的表达式,我们称为关系表达式。 a > b
-
比较运算符“==”不能误写成“=”
-
使用陷阱: 如果两个浮点数进行比较,应当保证数据类型一致.
3、逻辑运算符
用于连接多个条件(一般来讲就是关系表达式),最终的结果也是一个Boolean值。
(1)逻辑运算符一览
假定变量 A 为 true,B 为 false
4、赋值运算符
赋值运算符就是将某个运算后的值,赋给指定的变量。
(1)赋值运算符的分类
(2)赋值运算符特点
-
运算顺序从右往左
-
赋值运算符的左边 只能是变量,右边 可以是变量、表达式、常量值/字面量
-
复合赋值运算符等价于下面的效果, 比如:a+=3 等价于a=a+3
var num = 2
num <<= 2 //左移两位,num *( 2 * 2)即 左移为原数字乘以2的移动位数次方
num >>= 1 //右移1位 num / (2 * 1)即 右移为原数字除以2的移动位数次方
println( num)
// scala 支持代码块,返回值
val res = {
var value = 0
if(true) value=100
value
}
println(res)
5、位运算符
val a = 10
val b = 20
6、运算符使用注意事项
(1)运算符的特别说明
Scala不支持三目运算符 , 在Scala 中使用 if – else 的方式实现。
val num = 5 > 4 ? 5 : 4 //没有
val num = if (5>4) 5 else 4
(2)运算符优先级
运算符有不同的优先级,所谓优先级就是表达式运算中的运算顺序。如右表,上一行运算符总优先于下一行。
(3)只有单目运算符、赋值运算符是从右向左运算的。
(4)运算符的优先级和Java一样。
(5)运算符的优先级小结
- () []
- 单目运算
- 算术运算符
- 移位运算
- 比较运算符(关系运算符)
- 位运算
- 关系运算符
- 赋值运算
- ,