Scala的运算符

66 阅读3分钟

(一)算术运算符

内容

  1. 加 +
  2. 减 -
  3. 乘 *
  4. 除 /
  5. 取余 % //eg: 5%2 就是5除以2的余数, 5%2=1

eg:

//算术运算符
//数据类型 7:Int
//        4:Int
//        7/4结果是Int

println(7/4)  //7/4=1
println(7/4.0)  //7/4=1
println(7%4)   //3
println(7-4)   //3
println(7+4)   //11
println(7*4)  //28

注意*:7/4 =1,7/4.0=1.75*。原因是整数除法和浮点数除法的区别导致的1。 浮点数除法(7/4.0)如果其中一个操作数是浮点数(如 4.0),Scala 会执行‌浮点数除法‌,结果会保留小数部分。因此 7/4.0 计算为 1.75

(二)关系运算符

内容

image.png

eg:


 //关系运算符:  > < == >= !=
// 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

(三)逻辑运算符

内容

image.png

eg:

`

//逻辑运算符
/*
&&(并且) 全部为true ===>true
||(或者) 有一个为true ===>true
!(取反)
 */

//   println(1>2 && 3>4)
//   println(2>1 && 4>3)

   //println(1>2 || 3>4 || 5>6) //false
  //println(1>2 || 4>3)  //true
  println(!(1>2)) //t

`

(一)练习题

问: 判断一个年份是否是闰年 根据国际标准,一个年份被视为闰年的条件是,如下条件满足任意一个:

(1)能够被4整除,并且不能被100整除的年份是闰年。

(2)能够被400整除的年份同样也是闰年。

答案如下

object base07 {
  def main(args: Array[String]): Unit ={
    //判断闰年
    /*
    1.让用户输入一个整数,表示年份
    2.判断这个年份是不是闰年
    3.输出结果
     */
    val year: Int = scala.io.StdIn.readLine("请输入年份:").trim.toInt

    // 2020 ===>2000是闰年
    // 2024 ===>2024年是闰年
    // 2025 ===>2025年不是闰年
    // 1900 ===>1900年不是闰年
    //如果你定义了一个变量,并且之后并不打算修改她的值,那么建议使用val
    var result:Boolean =( (year%4==0 && year%100!=0 ) ||(year%400 == 0))
    if (result ){
      println(s"$year 是闰年")
    }
    else{
      println(s"$year 不是闰年")
    }
  }
}

运行如下

image.png

(四)赋值运算符

内容

  1. = 简单的赋值运算,指定将右边操作数赋值给左边的操作数

  2. += 相加后再赋值,将左右两边的操作数相加后再赋值给左边的操作数

  3. -= 相减后再赋值,将左右两边的操作数相减后再赋值给左边的操作数

  4. *= 相乘后再赋值,将左右两边的操作数相乘后再赋值给左边的操作数

  5. /= 相除后再赋值,将左右两边的操作数相除后再赋值给左边的操作数

  6. %= 求余后再赋值,将左右两边的操作数进行求余操作后再赋值给左边的操作数

eg:

//赋值运算符
var a = 1  //把右边的计算结果保存到左边的变量

//a += 2 // a+=2  等价于 a=a+2
print(a)//
//a-=3 //a-=3 等价于a=a-3
println(a) //

a*=3
println(a) //

a /= 4
println(a) //

a %=5
println(a) //

(五)Scala的位运算符

(一)10进制转成2进制

image.png

内容

常用的位运算符如下:

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.>> 右移运算符。左边补零,缩小。

eg:

var a = 5; // 101

    var b = 4  // 100

    println("5 & 4 =" + (5&4) ) // 0

    println("5 | 4 =" + (5|4) ) // 5
    

(六) Scala中运算符的优先级

内容

基本规则:

1. 乘(*)除(/)模(%) > 加(+)减(-)

2. 算术(+-*/%) > 关系(><>=!=) > 赋值(=)

3. && >

eg:

val a = true
val b = false
val c = false
println(a || b && c) //先算&& 再算|| true

println((a || b) && c) // 先算括号里面的  false

`