七.Scala 运算符
来源:互联网 发布:css布局 书籍 知乎 编辑:程序博客网 时间:2024/06/05 04:13
Scala 运算符
一个运算符是一个符号,用于告诉编译器来执行指定的数学运算和逻辑运算。
Scala 含有丰富的内置运算符,包括以下几种类型:
- 算术运算符
- 关系运算符
- 逻辑运算符
- 位运算符
- 赋值运算符
接下来我们将为大家详细介绍以上各种运算符的应用。
1.算术运算符
下表列出了 Scala 支持的算术运算符。
假定变量 A 为 10,B 为 20:
实例
itlocals-MacBook-Pro:scalaPMR david.tian$ vim Test.scalaobject Test{ def main(args: Array[String]){ var a = 10; var b = 20; println("a + b = " + (a + b ) ); println("a - b = " + (a - b ) ); println("a * b = " + (a * b ) ); println("a / b = " + (a / b ) ); println("a % b = " + (a % b ) ); }}itlocals-MacBook-Pro:scalaPMR david.tian$ scalac Test.scalaitlocals-MacBook-Pro:scalaPMR david.tian$ scala Testa + b = 30a - b = -10a * b = 200a / b = 0a % b = 10
2.关系运算符
下表列出了 Scala 支持的关系运算符。
假定变量 A 为 10,B 为 20:
=大于等于 (A >= B) 运算结果为 false <= 小于等于 (A <= B) 运算结果为 true
实例
itlocals-MacBook-Pro:scalaPMR david.tian$ vim TestRelationship.scalaobject TestRelationship { def main(args: Array[String]) { var a = 10; var b = 20; println("a == b = " + (a == b) ); println("a != b = " + (a != b) ); println("a > b = " + (a > b) ); println("a < b = " + (a < b) ); println("b >= a = " + (b >= a) ); println("b <= a = " + (b <= a) ); }}itlocals-MacBook-Pro:scalaPMR david.tian$ scalac TestRelationship.scalaitlocals-MacBook-Pro:scalaPMR david.tian$ scala TestRelationshipa == b = falsea != b = truea > b = falsea < b = trueb >= a = trueb <= a = false
3.逻辑运算符
下表列出了 Scala 支持的逻辑运算符。
假定变量 A 为 1,B 为 0:
实例
itlocals-MacBook-Pro:scalaPMR david.tian$ vim TestLogic.scalaobject TestLogic { def main(args: Array[String]) { var a = true; var b = false; println("a && b = " + (a&&b) ); println("a || b = " + (a||b) ); println("!(a && b) = " + !(a && b) ); }}itlocals-MacBook-Pro:scalaPMR david.tian$ scalac TestLogic.scalaitlocals-MacBook-Pro:scalaPMR david.tian$ scala TestLogica && b = falsea || b = true!(a && b) = true
4.位运算符
位运算符用来对二进制位进行操作,~,&,|,^分别为取反,按位与与,按位与或,按位与异或运算,如下表实例:
如果指定 A = 60; 及 B = 13; 两个变量对应的二进制为:
A = 0011 1100B = 0000 1101-------位运算----------A&B = 0000 1100A|B = 0011 1101A^B = 0011 0001~A = 1100 0011 #取反
Scala 中的按位运算法则如下:
>右移动运算符 a >> 2 输出结果 15 ,二进制解释: 0000 1111
无符号右移 A >>>2 输出结果 15, 二进制解释: 0000 1111>
实例
itlocals-MacBook-Pro:scalaPMR david.tian$ vim TestBit.scalaobject TestBit { def main(args: Array[String]) { var a = 60; /* 60 = 0011 1100 */ var b = 13; /* 13 = 0000 1101 */ var c = 0; c = a & b; /* 12 = 0000 1100 */ println("a & b = " + c ); c = a | b; /* 61 = 0011 1101 */ println("a | b = " + c ); c = a ^ b; /* 49 = 0011 0001 */ println("a ^ b = " + c ); c = ~a; /* -61 = 1100 0011 */ println("~a = " + c ); c = a << 2; /* 240 = 1111 0000 */ println("a << 2 = " + c ); c = a >> 2; /* 215 = 1111 */ println("a >> 2 = " + c ); c = a >>> 2; /* 215 = 0000 1111 */ println("a >>> 2 = " + c ); }}itlocals-MacBook-Pro:scalaPMR david.tian$ scalac TestBit.scalaitlocals-MacBook-Pro:scalaPMR david.tian$ scala TestBita & b = 12a | b = 61a ^ b = 49~a = -61a << 2 = 240a >> 2 = 15a >>> 2 = 15
5.赋值运算符
以下列出了 Scala 语言支持的赋值运算符:
按位右移后再赋值 C >>= 2 相当于 C = C >> 2 &= 按位与运算后赋值 C &= 2 相当于 C = C & 2 ^= 按位异或运算符后再赋值 C ^= 2 相当于 C = C ^ 2 |= 按位或运算后再赋值 C |= 2 相当于 C = C | 2=
实例
itlocals-MacBook-Pro:scalaPMR david.tian$ vim TestAssignment.scalaobject TestAssignment { def main(args: Array[String]) { var a = 10; var b = 20; var c = 0; c = a + b; println("c = a + b = " + c ); c += a ; println("c += a = " + c ); c -= a ; println("c -= a = " + c ); c *= a ; println("c *= a = " + c ); a = 10; c = 15; c /= a ; println("c /= a = " + c ); a = 10; c = 15; c %= a ; println("c %= a = " + c ); c <<= 2 ; println("c <<= 2 = " + c ); c >>= 2 ; println("c >>= 2 = " + c ); c >>= 2 ; println("c >>= a = " + c ); c &= a ; println("c &= 2 = " + c ); c ^= a ; println("c ^= a = " + c ); c |= a ; println("c |= a = " + c ); }}itlocals-MacBook-Pro:scalaPMR david.tian$ scalac TestAssignment.scalaitlocals-MacBook-Pro:scalaPMR david.tian$ scala TestAssignmentc = a + b = 30c += a = 40c -= a = 30c *= a = 300c /= a = 1c %= a = 5c <<= 2 = 20c >>= 2 = 5c >>= a = 1c &= 2 = 0c ^= a = 10c |= a = 10
6.运算符优先级
在一个表达式中可能包含多个有不同运算符连接起来的、具有不同数据类型的数据对象;由于表达式有多种运算,不同的运算顺序可能得出不同结果甚至出现错误运算错误,因为当表达式中含多种运算时,必须按一定顺序进行结合,才能保证运算的合理性和结果的正确性、唯一性。
优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。
相同优先级中,按结合顺序计算。大多数运算是从左至右计算,只有三个优先级是从右至左结合的,它们是单目运算符、条件运算符、赋值运算符。
基本的优先级需要记住:
- 指针最优,单目运算优于双目运算。如正负号。
- 先乘除(模),后加减。
- 先算术运算,后移位运算,最后位运算。请特别注意:1 << 3 + 2 & 7 等价于 (1 << (3 + 2))&7
- 逻辑运算最后计算
- & + - ! ~ ++expr –expr
* / %
+ -
>> <<
< > <= >=
==!=
^
|&&|| 左到右 三元运算符 ?: 右到左 赋值运算符 = += -= *= /= %= >>= <<= &= ^= |= 右到左 逗号 , 左到右
- 七.Scala 运算符
- Scala 运算符
- Scala运算符详解
- Scala运算符
- scala Collection 运算符
- scala(6)-----运算符
- JavaScript 运算符(七)
- 七、swift3.0运算符
- 探索Scala(1)-- 运算符重载
- scala运算符的几点说明
- Scala学习第五弹 运算符
- scala中运算符 :: 、:+ 、+: 、::: 、++ 的区别
- [scala之七]继承
- Scala练习(七)
- scala学习笔记(七)
- Scala学习七:数组
- c#学习笔记(七)运算符重载
- (七)运算符和类型转换
- uva401Palindromes(回文串和镜像串的判断)
- 图片处理,圆形圆角描边
- AngularJS之使用服务封装
- Vim快速选中、删除、复制引号或括号中的内容
- flume+kafka+hdfs日志系统
- 七.Scala 运算符
- Android 动画-Interpolator和TypeEvaluator
- kubenetes中指定web服务器使用的数据库(集群配置管理方案--ConfigMap)
- Android异步消息处理 (Handler)
- vijos——1214伤心的AsukaNoKaze
- Ajax状态值及状态码
- Hibernate模板类【理解】【应用】【重点】
- 第六次实验上机课(类和对象(物联网))
- nginx+tomcat绑定二级域名,部署多个应用