【Scala】 - 第三章 运算符 ⭐️⭐️⭐️

第三章 - 运算符


Read Me


运算符种类介绍 ?

1. 算术运算符
2. 赋值运算符
3. 比较运算符(关系运算符)
4. 逻辑运算符
5. 位运算符

算术运算符 ⭐️

  • 算术运算符列表

    运算符运算范例结果
    +正号+33
    -负号b=4; -b-4
    +5+510
    -6-42
    *****3*412
    /5/51
    %取模(取余)7%52
    +字符串相加“He”+”llo”“Hello”
  • ⭐️ ❤️细节说明

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

    package operator
    
    /**
      * 算术运算符 的基本用法
      * @author 王天赐
      * @create 2019-07-13 9:18
      */
    object ArithmeticOperator {
    
    	def main(args: Array[String]): Unit = {
    		// 假如还有97天放假,问:xx个星期零xx天
    		var currentDay = 97
    		var week = 97 / 7
    		var day = 97 % 7
    		println(s"${week}个星期零${day}天")
    
    		// 定义一个变量保存华氏温度,华氏温度转换摄氏温度的公式为:5/9*(华氏温度-100),请求出华氏温度对应的摄氏温度。[测试:232.5]
    		// 这里需要特别注意 5 / 9 默认结果是 Int 类型的 所以计算结果是 0
    		var Celsius = (5 / 9.toDouble) * (232.5 - 100)
    
    		printf("Celsius :%.2f" , Celsius)
    	}
    
    }
    // 结果
    13个星期零6天
    Celsius :73.61
    

关系运算符 ⭐️

  • 基本介绍

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

    运算符运算 范例 结果
    ==相等于 4==3 false
    !=不等于 4!=3 true
    <小于 4<3 false
    >大于 4>3 true
    <=小于等于 4<=3 false
    >=大于等于 4>=3 true
  • ⭐️细节说明

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

逻辑运算符 ⭐️⭐️

  • 逻辑运算符列表

    假定变量 A 为 true,B 为 false

    &&逻辑与(A && B) 运算结果为 false
    ||逻辑或(A || B) 运算结果为 true
    !逻辑非!(A && B) 运算结果为 true

赋值运算符 ⭐️⭐️

  • 赋值运算符列表

    运算符描述实例
    =简单的赋值运算符,将一个表达式的值赋给一个左值C = A + B 将 A + B 表达式结果赋值给 C
    +=相加后再赋值C += A 等于 C = C + A
    -=相减后再赋值C -= A 等于 C = C - A
    *=相乘后再赋值C *= A 等于 C = C * A
    /=相除后再赋值C /= A 等于 C = C / A
    %=求余后再赋值C %= A 等于 C = C % A
    运算符描述实例
    <<=左移后赋值C <<= 2 等于 C = C << 2
    >>=右移后赋值C >>= 2 等于 C = C >> 2
    &=按位与后赋值C &= 2 等于 C = C & 2
    ^=按位异或后赋值C ^= 2 等于 C = C ^ 2
    |=按位或后赋值C |= 2 等于 C = C | 2
  • 赋值运算符的特点

    1. 运算顺序从右往左

    2. 赋值运算符的左边 只能是变量,右边 可以是变量、表达式、常量值/字面量

    3. 复合赋值运算符等价于下面的效果
      比如:a+=3 等价于a=a+3

  • ☁️ 代码案例

    package operator
    
    /**
      * 赋值运算符
      * @author 王天赐
      * @create 2019-07-13 11:06
      */
    object AssignmentOperator {
    
    	def main(args: Array[String]): Unit = {
    
    		var v = 2
    
    		// <<= 左移 : 左移3相当于乘以2的3次方
    		v <<= 3
    		println("v : " + v)
    
    		// >>= 右移 右移3相当于除以3的2次方
    		v >>= 3
    		println("v : " + v)
    		// &= 按位与 运算规则 : 先转化为二进制 然后进行运算
    		// 比如 : 10 => 00001010 , 8 => 00001000
    		// 8 和 10 进行运算时 如果对应位上 只有有一个为 0 结果就是 0 全为1 结果为1
    		// 8 & 10 结果应该是 00001000 => 8
    		var v01 = 10
    		v01 &= 8
    		println(v01) // 结果 8
    
    		// ^= 按位异或
    		// 与上同理 只不过规则不同 : 相同为 0 , 不同为 1 ,就是 两个都是 0或者都是 1 结果为 0, 两个不同是 1
    		// 10 => 00001010 , 8 => 00001000
    		// 结果是 00000010 => 2
    		var v02 = 10
    		v02 ^= 8
    		println(v02) // 结果 2
    
    		// |= 按位或 : 规则 只要有一个是 1 结果就是 1
    		var v03 = 10
    		v03 |= 8
    		println(v03) // 结果 10
    
    	}
    }
    
    
  • 特别注意 : Scala不支持三目运算符 , 在Scala 中使用 if – else 的方式实现。

    package operator
    
    /**
      * 实现三目运算符的功能
      * @author 王天赐
      * @create 2019-07-13 15:32
      */
    object TrinocularOperator {
    
    	def main(args: Array[String]): Unit = {
    
    		// Scala不支持三目运算符 , 在Scala 中使用 if – else 的方式实现
    		var v01 = 10
    		var v03 = 1
    		var v02 = 21
    		// Scala 中支持代码块返回值
    		// 计算两个值中的最大值
    		var max2 = {
    			if (v01 > v02) {
    				v01
    			}else{
    				v02
    			}
    		}
    
    		// 判断三个值中最大的值
    		var max3 = {
    			if(v01 > v02){ 
    				if(v01 > v03){
    					v01
    				}else{
    					v03
    				}
    			}else{
    				if(v02 > v03){
    					v02
    				}else{
    					v03
    				}
    			}
    		}
    
    	}
    }
    
    
  • 位运算符

    a = 60 , b =

    运算符描述实例
    &按位与运算符(a & b) 输出结果 12 ,二进制解释: 0000 1100
    |按位或运算符(a | b) 输出结果 61 ,二进制解释: 0011 1101
    ^按位异或运算符(a ^ b) 输出结果 49 ,二进制解释: 0011 0001
    ~按位取反运算符(~a ) 输出结果 -61 ,二进制解释: 1100 0011, 在一个有符号二进制数的补码形式。
    <<左移动运算符a << 2 输出结果 240 ,二进制解释: 1111 0000
    >>右移动运算符a >> 2 输出结果 15 ,二进制解释: 0000 1111
    >>>无符号右移A >>>2 输出结果 15, 二进制解释: 0000 1111
  • 使用位运算符 不使用中间变量调换两个变量的值

    package operator
    
    /**
      * 使用位运算符 不使用中间变量调换两个变量的值
      * @author 王天赐
      * @create 2019-07-13 15:51
      */
    object BitOperator {
    
    	def main(args: Array[String]): Unit = {
    
    		var a = 1
    		var b = 2
    
    		// 使用位运算符进行替换 (按位异或)
    		// 原理比较简单 => a = 0001 b = 0010
    		// a ^ b = 0001(a) ^ 0010(b) = 0011(3)
    		// 0001(a) ^ 0011(c) = 0010(b)  注意 a 和 b 按位异或的结果 c , a ^ c = b
    		// 很明显 b ^ c = a , a ^ c = b
    		a ^= b  // a = a ^ b = c
    		b ^= a  // b = b ^ c(此时a的值是c) = a
    		a ^= b  // a = c ^ a = b
    
    		println(s"a = ${a} , b = ${b}")
    	}
    }
    
  • 关于运算符的优先级问题

    建议使用 () 来提升或者区分优先级 !

键盘输入语句 ⭐️

  • 介绍

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

  • ☁️ 代码案例​

    package operator
    
    import scala.io.StdIn
    
    /**
      * 测试 键盘输入
      * @author 王天赐
      * @create 2019-07-13 16:39
      */
    object InputDemo {
    
    	def main(args: Array[String]): Unit = {
    
    		println("请输入姓名 : ")
    		var name = StdIn.readLine()
    		println("请输入年龄 : ")
    		var age = StdIn.readInt()
    
    		println(s"[${name},${age}]")
    	}
    }
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

兀坐晴窗独饮茶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值