scala的基本运算

95 阅读2分钟

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)
  1. 运算符优先级:
  • 后缀运算符expr_(如 toString、自定义的后缀方法)
  • 前缀运算符+-!~
  • 乘法类运算符*/%
  • 加法类运算符+-
  • 移位运算符<<>>>>>
  • 关系运算符<><=>=ltgtlege
  • 相等运算符==!=eqne
  • 位与&
  • 位异或^
  • 位或|
  • 逻辑与&&
  • 逻辑或||
  • 赋值运算符=+=-=*= 等
  • 箭头运算符=>

scala的相等性

1.== 比较的对象只有数值,只要==两边的值相等,就返回true

  1. 在 Scala 中,相等性判断有两种主要方式:== 和 eq。

大数问题

一种整数都有自己的表达范围

浮点数精度

  1. 浮点类型的精度限制,Scala 提供两种基本浮点类型:

  • Float:32 位单精度浮点数,有效精度约 6-7 位十进制数字。
  • Double:64 位双精度浮点数,有效精度约 15-17 位十进制数字。
  1. 它们的精度限制源于二进制无法精确表示所有十进制小数,导致计算时可能产生微小误差。
  2. 由于二进制表示的局限性,简单的浮点运算可能出现反直觉的结果。
  3. BigDecimal:可控精度的十进制浮点数
  4. BigDecimal可以精确表示十进制小数,并允许手动指定精度和舍入模式,是处理高精度计算的首选。