算数运算符
%:计算余数。
5%2 就是5除以2的余数,5%2 = 1。
// 算数运算符
// 数据类型。 7:Int
// 4: Int
// 7/4结果是Int
println(7/4) // 7/4 = 1
println(7/4.0) // 7/4 = 1
println(7%4)
println(7-4)
println(7+4)
println(7*4)
注意:7/4 = 1,7/4.0=1.75。
原因是:数据类型不一样。
关系运算符
关系运算符:用来对数值进行比较。
// 关系运算符: > < == >= !=
// false true
val a:Boolean = 3 > 2
println(a)
println(7==4) // false
println(7>4) //true
println(7!=4) //true
println(7<4) //false
println(7>=4) //true
println(7<=4) //false
逻辑运算符
Scala中的运算符有三种:
与:&&(并且) 全部为true ===> true
或:||(或者) 有一个为true ===> true
非:!(取反)
举例1:
// 与:&&(并且) 全部为true ===> true
println(1 > 2 && 3 > 4) //true
println(2 > 1 && 4 > 3) //true
// 或:||(或者) 有一个为true ===> true
println(1 > 2 || 3 > 4) // false
println(1 > 2 || 4 > 3) // true
// 非:!(取反)
println(!(1>2)) // true
举例2:判断闰年
println("请输入一个年份:")
val year:Int = scala.io.StdIn.readInt()
var result:Boolean =(year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)
if(result) {
println(s"$year 是闰年")
} else {
println(s"$year 不是闰年")
}
赋值运算符
运算符:
- = 简单的赋值运算
- += 相加后再赋值
- -= 相减后再赋值
- *= 相乘后再赋值
- /= 相除后再赋值
- %= 求余后再赋值
var a = 10 // 把右边的计算结果保存到左边的变量
a += 2 // 等价于 a = a+2
println(a)
a -= 3 // 等价于 a = a-3
println(a)
a *= 3 // 等价于 a = a*3
println(a)
a /= 4 // 等价于 a = a/4
println(a)
a %= 5 // 等价于 a = a%5
println(a)
位运算
常用的位运算符如下:
1. & 按位与运算符。0&1 = 0, 1&0= 0 , 0&0 = 0, 1&1 = 1
2. | 按位或运算符。0|1 = 1, 1|0= 1 , 0|0 = 0, 1|1 = 1
3. ^ 按位异或运算符。0^1 = 1, 1^1= 0, 0^0 = 0
4. ~ 按位取反运算符
5. << 左移运算符。右边补零,放大。
6. >> 右移运算符。左边补零,缩小。
// 位运算
println(5 & 4) // 4
println(5 | 4) // 5
println(4<<2) // 16
println(4>>2) // 1
优先级
基本规则:
1. 乘(*)除(/)模(%) > 加(+)减(-)
2. 算术(+-*/%) > 关系(><>=!=) > 赋值(=)
3. && > ||
val result = 10 - 2 + 3 * 4 / 2
println(result) // 问题1
val a = true
val b = false
val c = false
println(a || b && c) // 问题2
大数问题
一种整数都有自己的表达范围,一旦超过了这个范围就会报错,或者是导致计算异常
用BigInt(数字字符串)来解决这个问题
var a =BigInt("11111111111111111111111")
var b =BigInt("11111111111111111111111")
var c = a * b
println(c)