大数据技术之_16_Scala学习_03_运算符+程序流程控制

大数据技术之_16_Scala学习_03

第三章 运算符

3.1 运算符介绍

  运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。
  1、算术运算符
  2、赋值运算符
  3、比较运算符(关系运算符)
  4、逻辑运算符
  5、位运算符

3.2 算术运算符

3.2.1 介绍

  算术运算符(arithmetic)是对数值类型的变量进行运算的,在 Scala 程序中使用的非常多。

3.2.2 算术运算符一览图

3.2.3 案例演示

案例演示算术运算符的使用。

+, -, *, /, %   重点讲解 /、%
+, -, *         是一个道理,完全可以类推。
算数运算符的运算规则和 Java 一样。

示例代码如下:

package com.atguigu.chapter03.arithoper

object Demo01 {
   
  def main(args: Array[String]): Unit = {
   
    // / 的使用
    var r1: Int = 10 / 3
    println("r1=" + r1)   // 3
    var r2: Double = 10 / 3
    println("r2=" + r2)   // 3.0
    var r3: Double = 10.0 / 3
    println("r3=" + r3)   // 3.3333333333333335
    println("r3=" + r3.formatted("%.2f")) // 3.33

    // % 的使用
    // 1、% 运算的原则:a % b = a - a/b * b
    println(10 % 3)   // 1
    println(-10 % 3)  // -1
    println(-10 % -3) // -1
    println(10 % -3)  // 1

    // ++ 和 --
    // 说明:在 Scala 中没有 ++ 和 -- 了,而是使用 +=1 和 -=1
    var num1 = 10
    // num1++ // error
    // ++num1 // error
    num1 += 1 // 替代了 num1++
    num1 -= 1 // 替代了 num1--
  }
}
3.2.4 细节说明

  1、对于除号“/”,它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分。例如:var x: Int = 10/3 结果是 3。
  2、当对一个数取模时,可以等价 a%b=a-a/b*b ,这样我们可以看到取模的一个本质运算(和 java 的取模规则一样)。
  3、注意:Scal中没有 ++、-- 操作符,需要通过 +=、-= 来实现同样的效果。

3.3.5 课堂练习

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

package com.atguigu.chapter03

object Exercise01 {
   
  def main(args: Array[String]): Unit = {
   
    // 1、假如还有 97 天放假,问:xx 个星期零 xx 天。
    // (1) 搞清楚需求(读题)
    // (2) 思路分析
    // (3) 代码实现
    val days = 97
    printf("统计结果是:%d个星期零%d天", days / 7, days % 7)

    println()

    // 2、定义一个变量保存华氏温度,华氏温度转换摄氏温度的公式为:5/9*(华氏温度-100),请求出华氏温度对应的摄氏温度。[测试:232.5]
    val huashi = 232.5
    val sheshi = 5 / 9.0 * (huashi - 100)
    println("摄氏温度是" + sheshi.formatted("%.2f") + "℃")
  }
}

输出结果如下:

统计结果是:13个星期零6天
摄氏温度是73.61℃

3.3 关系运算符(比较运算符)

3.3.1 基本介绍

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

3.3.2 关系运算符一览图

3.3.3 案例演示

案例演示关系运算符的使用。
示例代码如下:

    var a = 9
    var b = 8
    println(a>b)  // true
    println(a>=b) // true
    println(a<=b) // false
    println(a<b)  // false
    println(a==b) // false
    println(a!=b) // true
    var flag: Boolean = a > b  // true
3.3.4 细节说明

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

3.4 逻辑运算符

3.4.1 介绍

  用于连接多个条件(一般来讲就是关系表达式),最终的结果也是一个 Boolean 值

3.4.2 逻辑运算符一览图

假定变量 A 为 true,B 为 false

示例代码如下:

    var a = true
    var b = false
    println("a && b = " + (a && b))  // false
    println("a || b = " + (a || b))  // true
    println("!(a && b) = " + !(a && b)) // true

3.5 赋值运算符

3.5.1 介绍

  赋值运算符就是将某个运算后的值,赋给指定的变量。

3.5.2 赋值运算符的分类

1、

2、

说明:这部分的赋值运算涉及到二进制相关知识,其运行的规则和 Java 一样。
原码、反码、补码 详解:https://www.cnblogs.com/chenmingjun/p/8306863.html

3.5.3 案例演示

交换两个数的值。三种方法
示例代码如下:


    // 方式一:使用中间变量
    var a = 10
    var b = 99
    println("a=" + a + "\tb=" + b)
    // 交换
    val t = a
    a = b
    b = t
    println("a=" + a + "\tb=" + b)

    // 方式二:使用加减运算方式
    var a = 10
    var b = 99
    a = a + b
    b = a - b  // => (a+b)-b = a = b
    a = a - b  // => (a+b)-a = b = a

    // 方式三:位运算方法:任意一个数与任意一个给定的值连续异或两次,值不变。
    a = a ^ b;         
    b = a ^ b; // b = a ^ b = a ^ b ^ b = a       
    a = a ^ b; // a = a ^ b = a ^ a ^ b = b
3.5.4 赋值运算符特点

  1、运算顺序从右往左。
  2、赋值运算符的左边只能是变量,右边可以是变量、表达式、常量值/字面量。
  3、复合赋值运算符等价于下面的效果:
  比如:a += 3 等价于a = a + 3
示例代码如下:

package com.atguigu.chapter03.assignoper

object Demo01 {
   
  def main(args: Array[String]): Unit = {
   
    var num1 = 2
    num1 <<= 2
    println("num1=" + num1) // 8

    var num2 = 2
    num2 >>= 1
    println("num2=" + num2) // 1

    // 在 scala 中支持在代码块返回值
    val res1 = {
   
      90
    }
    println("res1=" + res1) // 90

    val res2 = 
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值