scala的位运算符
常用运算符
- & 按位与运算符。
- | 按位或运算符
- ~ 按位取反运算符
- ^ 按位异或运算符
- << 左移运算符。右边补零,放大。
- (>>) 右移运算符。左边补零,缩小。
object basic06 {
def main(args: Array[String]): Unit = {
println(5&4)
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
scala中运算符的优先级
基本规则
1. 乘除模 > 加减
2. 算术 > 关系 > 赋值
3. && >||
val a=true
val b=false
val c=false
println(a||b&&c)//先算&&,再算||
println(a||(b&&c))
println((a||b) && c)
- 运算符优先级:
- 后缀运算符:
expr_(如toString、自定义的后缀方法) - 前缀运算符:
+、-、!、~ - 乘法类运算符:
*、/、% - 加法类运算符:
+、- - 移位运算符:
<<、>>、>>> - 关系运算符:
<、>、<=、>=、lt、gt、le、ge - 相等运算符:
==、!=、eq、ne - 位与:
& - 位异或:
^ - 位或:
| - 逻辑与:
&& - 逻辑或:
|| - 赋值运算符:
=、+=、-=、*=等 - 箭头运算符:
=>
scala的相等性
1.== 比较的对象只有数值,只要==两边的值相等,就返回true
-
在 Scala 中,相等性判断有两种主要方式:== 和 eq。
大数问题
一种整数都有自己的表达范围
浮点数精度
-
浮点类型的精度限制,Scala 提供两种基本浮点类型:
- Float:32 位单精度浮点数,有效精度约 6-7 位十进制数字。
- Double:64 位双精度浮点数,有效精度约 15-17 位十进制数字。
- 它们的精度限制源于二进制无法精确表示所有十进制小数,导致计算时可能产生微小误差。
- 由于二进制表示的局限性,简单的浮点运算可能出现反直觉的结果。
- BigDecimal:可控精度的十进制浮点数
- BigDecimal可以精确表示十进制小数,并允许手动指定精度和舍入模式,是处理高精度计算的首选。