- 1.算术运算符
- 2 赋值运算符
- 3.关系运算符
- 4.逻辑运算符
- 5.位运算符
- 5.1铺垫知识
- 5.1.1进制
- 5.1.2 8421码
- 5.1.3整数的原码、反码、补码计算规则
- 5.2 位运算符
- 运算符:用来拼接变量或常量的符号
- 表达式:通过运算符连接起来的式子
注意:
- 在Scala中,运算符并不仅仅是运算符,也是函数的一种
- Scala中没有三元运算符,被if-else代替了
注意:
- Scala中是没有++,–这两个算术运算符的,这点和Java不一样
- 整数相除的结果,还是整数;如果想获得小数,则必须有浮点型数据参与。比如10/3 结果是 3; 10/3.0 结果是 3.3333(无限循环)
- 关于+号拼接字符串:任意类型的数据和字符串拼接,结果都将是一个新的字符串
- 关于%操作,假设求a%b的值,它的底层原理是:a - a/b * b
基本赋值运算符:=
扩展赋值运算符:+=, -=, *=, /=, %=
但Scala的关系运算符用法也有跟Java不一样的地方:
示例:
有一个字符串"abc",再创建第二个字符串,值为:在第一个字符串后拼接一个空字符串。然后比较这两个字符串是否相等、再查看它们的引用值是否相等。
注意:
- 逻辑表达式不管简单或复杂,最终结果一定是Boolean类型的值
- Scala中不能对一个Boolean类型的数据进行连续取反操作,但在Java中是可以的(即!!false会报错的)
注意:
- 关于二进制的数据,最前边的一位叫符号位(0表示正数,1表示负数);其他位叫数值位
8421码是用来描述二进制和十进制数据之间的关系的。
原反补码指的都是二进制数据(计算机底层存储、操作和运算数据都是采用数据的二进制补码形式来实现的)。
注意:
- 位运算符只针对整型数据
- 运算符操作的是数据的二进制补码形式
- 小技巧:一个数字被同一个数字位异或两次,该数字值不变(即10 ^ 20 ^ 20,结果还是10)
案例:交换两个变量的值
方式一:通过算术运算符实现
var a = 10
var b = 20
a = a + b //a = 30, b = 20
b = a - b //a = 30, b = 10
a = a - b //a = 20, b = 10
print("a: " + a)
print("b: " + b)
方式二:通过定义临时变量实现
var a = 10
var b = 20
var temp = a
a = b //a = 20, b = 20, temp = 10
b = temp //a = 20, b = 10, temp = 10
print("a: " + a)
print("b: " + b)
方式三:通过位运算方法实现
var a = 10
var b = 20
var temp = a ^ b
a = a ^ temp //a = a ^ temp = a ^ a ^ b = 10 ^ 10 ^ 20 = 20
b = b ^ temp //b = b ^ temp = b ^ a ^ b = 20 ^ 10 ^ 20 = 10
print("a: " + a)
print("b: " + b)



