Scala编程学习之三-运算符篇

1.运算符介绍

运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。
1)算术运算符
2)赋值运算符
3)比较运算符(关系运算符)
4)逻辑运算符【与,或,非】
5)位运算符 (位运算 ~ | ^ >> << >>>…)

# 1.1 运算符的一览图

在这里插入图片描述

## 1.2案例演示
案例演示算术运算符的使用(Operator.scala)。
+, - , * , / , % 重点讲解 /、%
+、-、* 是一个道理,完全可以类推。
算数运算符的运算规则和Java一样

案例:

var r1 : Int = 10 / 3  // 3 [不会进行四舍五入]
println("r1=" + r1)
var r2 : Double = 10 / 3 【3.0 1.先得到 3 => 3.0 】
println("r2=" + r2)
var r3 : Double = 10.0 / 3  [3.3333333..]
println("r3=" + r3 )
println("r3=" + r3.formatted("%.2f") ) // 格式化输出, 保留小数点2位,并且进行四舍五入

## 1.3细节说明
1)对于除号“/”,它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分。 例如:var x : Int = 10/3 ,结果是 3
2)当对一个数取模时,可以等价 a%b=a-a/b*b , 这样我们可以看到取模的一个本质运算(和java 的取模规则一样)。

3)注意:Scala中没有++、–操作符,需要通过+=、-=来实现同样的效果
4)代码

object Demo02 {
  def main(args: Array[String]): Unit = {

    var i = 10
    //i++ ++i 没有了
    //i-- --i 没有
    //使用 += -= 替代. go
    i += 1
    i -= 1

    //取模
    println("res0=" + 10 % 3) // 1
    println("res0=" + -10 % 3) // => -10 - (-10)/3 * 3  => -10 - (-9) = -1
    println("res0=" + -10 % -3) // =>-10 - (-10)/(-3) * -3 =>-10 - (-9) = -1
    println("res0=" + 10 % -3) //  =>10 - (10)/(-3) * -3 => 10 - 9 = 1

  }
}

## 1.4小练习
1)假如还有97天放假,问:xx个星期零xx天
2)定义一个变量保存华氏温度,华氏温度转换摄氏温度的公式为:5/9*(华氏温度-100),请求出华氏温度对应的摄氏温度。[测试:232.5]

object Exercise01 {
  def main(args: Array[String]): Unit = {
    /*
    假如还有97天放假,问:xx个星期零xx天

     */
    //1. 先定义一个变量,来保存天数
    //2. 使用 / 和 % 方法
    val days = 97
    printf("距离放假%d个星期零%d天\n", days / 7, days % 7)

    /*
    定义一个变量保存华氏温度,华氏温度转换摄氏温度的公式为:5/9*(华氏温度-100),请求出华氏温度对应的摄氏温度
    思路就是定义变量保存摄氏温度和华氏温度,注意精度

     */

    val huashi = 232.5
    //套用公式 [坑 ]
    val sheshi = 5.0 / 9 * (huashi - 100)
    println("摄氏温度为" + sheshi.formatted("%.2f"))

  }
}

2.关系运算符(比较运算符)

## 2.1基本介绍

关系运算符的结果都是Boolean型,也就是要么是true,要么是false
关系表达式 经常用在 if结构的条件中或循环结构的条件中
关系运算符的使用和java一样

## 2.2关系运算符的一览图

在这里插入图片描述

## 2.3细节说明
1)关系运算符的结果都是Boolean型,也就是要么是true,要么是false。
2)关系运算符组成的表达式,我们称为关系表达式。 a > b
3)比较运算符“==”不能误写成“=”
4)使用陷阱: 如果两个浮点数进行比较,应当保证数据类型一致.

3逻辑运算符

在这里插入图片描述

4.赋值运算符

在这里插入图片描述
在这里插入图片描述

## 4.1案例
object BitDemo {
def main(args: Array[String]): Unit = {

val res = -3 & -2 //运算一定要知道.
println("res=" + res)//-4

}
}

5.位运算符

在这里插入图片描述

6.运算符的特别说明

Scala不支持三目运算符 , 在Scala 中使用 if – else 的方式实现。

## 6.1小练习

案例1:求两个数的最大值
案例2:求三个数的最大值

object MaxVal {
  def main(args: Array[String]): Unit = {
    /*
    案例1:求两个数的最大值

     */
    val n1 = 20
    val n2 = 40
    val n3 = 89
    //scala中,没有三目,使用if -- else 替代
    //val res = n1 > n2 ? n1 : n2
    var max = if (n1 > n2)  n1 else n2
    println("max=" + max)
    //肯  汤普森 =>google [go] 2000年 09=》 go =>替代java 《---》
    //求3个数的最大值
    max = if (max > n3)  max else n3
    println("max=" + max)
  }
}

6.2运算符优先级

  1. 运算符有不同的优先级,所谓优先级就是表达式运算中的运算顺序。如右表,上一行运算符总优先于下一行。

  2. 只有单目运算符、赋值运算符是从右向左运算的。

3)运算符的优先级和Java一样。
4)小结运算符的优先级
() [] 可以直接提示优先级
单目运算 (! ~)
算术运算符.
位移运算
关系运算符(比较运算符)
位运算
逻辑运算
赋值运算

在这里插入图片描述

7.scala键盘输入语句

7.1介绍

在编程中,需要接收用户输入的数据,就可以使用键盘输入语句来获取。InputDemo.scala

7.2案例演示
1)要求:可以从控制台接收用户信息,【姓名,年龄,薪水】。
2)Scala的实现 【 import scala.io.StdIn】
3)代码

//小技巧
//1. 如果要看一个类或者object的内容 scala.io.StdIn // StdIn
//2. 如果要看一个包的内容, 把光标定位  io 上,输入 ctrl+b
import scala.io.StdIn

object InputDemo {
  def main(args: Array[String]): Unit = {
    /*
    要求:可以从控制台接收用户信息,【姓名,年龄,薪水】。

     */
    println("请输入name")
    //直接调用StdIn 这个object的静态方法。
    val name = StdIn.readLine()
    println("name=" + name)

    println("age")
    val age = StdIn.readInt()
    println("age=" + age)

    println("薪水")
    val sal = StdIn.readDouble()
    println("sal=" + sal)

  }
}
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值