scala基础学习_运算符

文章目录

scala运算符

在 Scala 中,运算符通常被定义为方法。这意味着你可以将运算符视为对象上的方法调用。以下是一些常用的运算符及其对应的操作:

算术运算符

  • +:加法
  • -:减法
  • *:乘法
  • /:除法
  • %:取模(余数)

例如:

scala 复制代码
val a = 10
val b = 3
val sum = a + b  // 13
val diff = a - b  // 7
val prod = a * b  // 30
val quot = a / b  // 3
val rem = a % b   // 1

关系运算符

返回都是布尔值

  • ==:等于
  • !=:不等于
  • <:小于
  • <=:小于等于
  • >:大于
  • >=:大于等于
scala 复制代码
val a = 10
val b = 20
val isEqual = a == b  // false
val isNotEqual = a != b  // true
val isLess = a < b  // true
val isLessOrEqual = a <= b  // true
val isGreater = a > b  // false
val isGreaterOrEqual = a >= b  // false

逻辑运算符

返回布尔值

  • &&:逻辑与 (and)
  • ||:逻辑或 (or)
  • !:逻辑非 (!)
scala 复制代码
val a = true
val b = false
val and = a && b  // false
val or = a || b   // true
val not = !a      // false

位运算符

  • &:按位与
  • |:按位或
  • ^:按位异或
  • <<:左移
  • >>:右移
  • >>>:无符号右移
scala 复制代码
val a = 12  // 二进制: 1100
val b = 10  // 二进制: 1010
val and = a & b  // 二进制: 1000, 十进制: 8
val or = a | b   // 二进制: 1110, 十进制: 14
val xor = a ^ b  // 二进制: 0110, 十进制: 6
val leftShift = a << 2  // 二进制: 110000, 十进制: 48
val rightShift = a >> 2  // 二进制: 11, 十进制: 3
val unsignedRightShift = -a >>> 2  // 二进制: 11111111111111111111111111111101 >> 2, 十进制: 1073741821

其他运算符

  • unary_+:一元加(通常不改变数值)
  • unary_-:一元减(取反)
  • unary_!:一元非(逻辑非,支持布尔值)
  • unary_~:一元按位非
scala 复制代码
val a = 42
val plusA = +a  // 42
val minusA = -a  // -42
val notA = !a   // 编译错误,因为 a 不是 Boolean 类型
val complementA = ~a  // -43 (二进制补码)

赋值运算符

  • =:赋值
  • +=:加并赋值
  • -=:减并赋值
  • *=:乘并赋值
  • /=:除并赋值
  • %=:取模并赋值
  • <<=:左移并赋值
  • >>=:右移并赋值
  • >>>=:无符号右移并赋值
  • &=:按位与并赋值
  • |=:按位或并赋值
  • ^=:按位异或并赋值
scala 复制代码
var a = 10
a += 5  // a 现在是 15  a = a+5
a -= 3  // a 现在是 12
a *= 2  // a 现在是 24
a /= 4  // a 现在是 6
a %= 4  // a 现在是 2
相关推荐
xy_recording2 分钟前
Day20 K8S学习
学习·容器·kubernetes
Lynnxiaowen2 分钟前
今天继续昨天的正则表达式进行学习
linux·运维·学习·正则表达式·云计算·bash
zhangfeng11337 分钟前
R 语法高亮为什么没有,是需要安装专用的编辑软件,R语言自带的R-gui 功能还是比较简单
开发语言·r语言
qq_1728055926 分钟前
Go 装饰器模式学习文档
学习·golang·装饰器模式
chao1898441 小时前
基于MATLAB的线性判别分析(LDA)人脸识别实现
开发语言·matlab
kyle~1 小时前
排序---快速排序(Quick Sort)
java·开发语言
刘梓谦1 小时前
如何在Qt中使用周立功USB转CAN卡
开发语言·qt·zlg·周立功
江公望1 小时前
Qt QML实现无边框窗口
开发语言·qt
秦禹辰2 小时前
宝塔面板安装MySQL数据库并通过内网穿透工具实现公网远程访问
开发语言·后端·golang