算术运算符
%:计算余数。5%2就是5除以2的余数,5%2=1
//算术运算符
//false true
//数据类型。7:Int
// 4:Int
// 7/4结果是Int
println(7/4) //7/4=1
println(7/4.0)//结果是1.75
println(7%4)//3
//判断奇数还是偶数?
//3%2==1
//4%2==0
println(7-4)//3
println(7+4)//11
println(7*4)//28
注意: 7/4=1,7/4.0=1.75 原因:7,4都是Int(整数),所以结果也是Int。4.0是Double(浮点),所以结果是Double
关系运算符
关系运算符: > ,< ,==, >=, <=,!=
val a:Boolean=1>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
逻辑运算符
逻辑运算符:&&,||,!
//逻辑运算符:
// &&(并且)全部为true=====>true
//||(或者)有一个为true=====>true
// !(非)
// println(1>2 && 3>4)
// println(2>1 && 4>3)
println(1>2 || 3>4 ||5>6)//false
println(2>1 || 4>3)//true
println(!(1>2))//true
练习:判断是否为闰年 判断一个年份是否是闰年 根据国际标准,一个年份满足如下条件满足任意一个: (1)能够被 4 整除,并且不能被 100 整除的年份是闰年。 (2)能够被 400 整除的年份同样也是闰年。 示例代码如下:
object day10 {
def main(args: Array[String]): Unit = {
//判断闰年
/*1.让用户输入一个整数,表示年份
2.判断这个年份是否是闰年
3.输出结果
*/
val year:Int=scala.io.StdIn.readInt()
//2000==闰年
//2024==闰年
//2025==闰年
//1900==不是闰年
//如果定义一个变量,并且之后不打算修改它的值,那么建议使用val
var result:Boolean=(year %4==0 && year%100!=0 )||(year %400==0)
if(result){
println(s"$year 是闰年")
}else{
println(s"$year 不是闰年")
}
}
}
赋值运算符
1.= 简单的赋值运算,指定将右边操作数赋值给左边的操作数
2.+= 相加后再赋值,将左右两边的操作数相加后再赋值给左边的操作数
3.-= 相减后再赋值,将左右两边的操作数相减后再赋值给左边的操作数
4.*= 相乘后再赋值,将左右两边的操作数相乘后再赋值给左边的操作数
5./= 相除后再赋值,将左右两边的操作数相除后再赋值给左边的操作数
6.%= 求余后再赋值,将左右两边的操作数进行求余操作后再赋值给左边的操作数 示例代码:
//赋值运算符:
var a=1//把右边的计算结果保存到左边的变量
a+=2//+= 等价于 a=a+2
println(a) //a=3
a-=3//-= 等价于 a=a-3
println(a)//a=-2
a*=3//*= 等价于 a=a*3
println(a)//a=3
a/=4// /=等价于 a=a/4
println(a)//a=0
a%=5// %=等价于 a=a%5
println(a)//a=1
位运算符
常见位运算符:
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.>> 右移运算符。左边补零,缩小。
10进制转成2进制(除取余)
示例代码如下:
var a = 5; // 101
var b = 4 // 100
println("5 & 4 =" + (5&4) ) // 0
println("5 | 4 =" + (5|4) ) // 5
println("5 ^ 4 =" + (5^4) ) // 1
println("4 >> 2 =" + (4>>2) ) // 1
println("4 << 2 =" + (4<<2) ) // 16
运算符的优先级
1.乘(*)除(/)模(%) > 加(+)减(-)
2.算术(+-*/%) > 关系(><>=!=) > 赋值(=)
3.&& > ||
示例代码如下:
val result = 10 - 2 + 3 * 4 / 2
println (result) // 问题 1===>14
val a = true
val b = false
val c = false
println (a || b && c) // 问题 2===>true
浮点数精度
0.1 + 0.2 == 0.3 // false
为false的原因:由于精度的问题,小数的计算会存在误差(可能结果为0.300001,或0.30001,.....)
解决方案: 使用BigDecimal()函数
示例代码:
println(BigDecimal(0.1) + BigDecimal(0.2) == BigDecimal(0.3))//结果为true
大数问题
一种整数都有自己的表达范围,例如Int类型的最大值是2147483647,一旦超过了这个范围就会报错,或者是导致计算异常。 示例代码:
//一个字符串,表示数字的字符串
var a=BigInt("11111111111111111111111111")
var b=BigInt("11111111111111111111111111")
var c=a*b
println(c)