开发者学堂课程【Scala 核心编程-基础:运算符特别说明】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/609/detail/8906
运算符特别说明
基本内容
一、位运算符
二、运算符号的特别说明
一、 位运算符
1、 位运算具有单独的、两个数的相互运算,比如说按位与、按位或、按位异或、按位取反、左移动、右移动、无符号;
2、 ”>>>”是“符号位”,它是不会变化的。
运算符 |
描述 |
实例 |
& |
按位或运算符 |
(a I b)输出结果61,二进制解释: 0011 1101 |
| |
按位或运算符 |
(a I b)输出结果61,二进制解释: 0011 1101 |
* |
按位异或运算符 |
(a^ b)输出结果49,二进制解释: 0011 0001 |
~ |
按位取反运算符 |
(~a)输出结果-61,二进制解释: 11000011, 在一个有符号二进制数的补码形式。 |
<< |
左移动运算符 |
a<< 2输出结果240,二进制解释: 1111 0000 |
>> |
右移动运算符 |
a>> 2输出结果15,二进制解释: 00001111 |
>>> |
无符号右移 |
A>>>2输出结果15,二进制解释:00001111 |
说明:位运算符的规则和 Java 一样。
二、 运算符号的特别说明
1、 Scala 不支持三目运算符,在 Scala 中使用 if- else 的方式实现。
(1) 在 Scala 没有传统的写法,举例:
val num = 5 > 4 ? 5 : 4\\没有
(2) 在 Scala 里面使用如下写法:
val num = if(5>4) else 4
(3) 注意事项:
首先需要新建一个包(notice), 新建一个以上案例(Demo01),
package com. atguigu. chapter03. notice
object Demo01 {
def main(args: Array[string] ): Unit = {
val num= if (5> 4) 5 else 4
//val num2= 5 > 4 ? 5 : 4 错误,这个语法不成立。
}
}
2、 课堂练习
(1) 问:案例1:求两个数的最大值
package com. atguigu. chapter03. notice
object Demo01 {
def main(args: Array[string] ): Unit = {
val num= if (5> 4) 5 else 4
//val num2= 5 > 4 ? 5 : 4 错误,这个语法不成立。
求两个数的最大值 首先定义两个数;
val n1 = 4
val n2 = 8
接着进行数字的判断;
val res = if (n1 > n2) n1 else n2
如果 n1大于 n2,那么返回 n1,否则返回 n2。
printl(“res
=
”+
res)
}
}
运行结果:
res = 8//结果正确
(2) 问:案例2: 求三个数的最大值
package com. atguigu. chapter03. notice
object Demo01 {
def main(args: Array[string] ): Unit = {
val num= if (5> 4) 5 else 4
//val num2= 5 > 4 ? 5 : 4 错误,这个语法不成立。
求三个数的最大值 首先定义两个数;
val n1 = 4
val n2 = 8
接着进行数字的判断;
val res = if (n1 > n2) n1 else n2
如果 n1大于 n2,那么返回 n1,否则返回 n2。
printl(“res
=
”+
res)
val
n3 = 11
res
= if (
res
> n3 )
res
else n3
// 如果上面的返回结果大于 n3,那么就返回上来的结果 ;否则的话返回 n3
printl(“res
=
”+
res)
}
}
返回结果:
res = 8
res = 11
3、 Scala 的设计理念:
一种事情尽量只有一种方法完成,这样可以让代码风格更加统一。
这个思想在这里讲解一下。为什么马丁要把三目运算符去掉,他的设计思想是这样的:尽量只有一种方法去完成,这样可以让代码风格更加统一。于是就把三目运算符去掉了,不但是马丁把这个三目运算去掉了,像 Go 语言一些新兴的语言,也把三目运算去掉了,因为程序员觉得三目运算符有点多余,因为 if - else 完全可以独自做到,所以就把三目运算符去掉了,所以以后要去习惯不再使用三目运算符,检查程序设计里是否存在三目运算符的用法。