HoRain云--Scala运算符全解析:高效编程必备

  

🎬 HoRain云小助手个人主页

 🔥 个人专栏: 《Linux 系列教程》《c语言教程

⛺️生活的理想,就是为了理想的生活!


⛳️ 推荐

前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!忍不住分享一下给大家。点击跳转到网站。

专栏介绍

专栏名称

专栏介绍

《C语言》

本专栏主要撰写C干货内容和编程技巧,让大家从底层了解C,把更多的知识由抽象到简单通俗易懂。

《网络协议》

本专栏主要是注重从底层来给大家一步步剖析网络协议的奥秘,一起解密网络协议在运行中协议的基本运行机制!

《docker容器精解篇》

全面深入解析 docker 容器,从基础到进阶,涵盖原理、操作、实践案例,助您精通 docker。

《linux系列》

本专栏主要撰写Linux干货内容,从基础到进阶,知识由抽象到简单通俗易懂,帮你从新手小白到扫地僧。

《python 系列》

本专栏着重撰写Python相关的干货内容与编程技巧,助力大家从底层去认识Python,将更多复杂的知识由抽象转化为简单易懂的内容。

《试题库》

本专栏主要是发布一些考试和练习题库(涵盖软考、HCIE、HRCE、CCNA等)

目录

⛳️ 推荐

专栏介绍

📊 运算符概览

⚠️ 特别注意

🧠 运算符优先级

💡 总结


img

Scala 提供了丰富的运算符来完成各种数学、逻辑和位操作。由于搜索结果中的信息非常丰富但稍显零散,我结合自己的知识,用表格为你梳理了 Scala 中主要的运算符类型、含义和示例,方便你快速查阅。

📊 运算符概览

类型

运算符

描述/规则

示例

结果/说明

​算术运算符​

+

加法;也表示正号或字符串拼接

val sum = 5 + 3

8

-

减法;也表示负号

val diff = 5 - 3

2

*

乘法

val prod = 5 * 3

15

/

​整数除法​​:整数相除结果仍为整数(舍小数);有浮点数参与则结果为浮点

10 / 3
10.0 / 3

3
~3.333

%

取模(取余)

10 % 3

1

**

幂运算(部分环境或通过扩展支持)

2 ** 3

8

​关系运算符​

==

​比较值相等​​(类似 Java 的 equals()

"abc" == "abc"

true

!=

不等于

5 != 3

true

>

大于

5 > 3

true

<

小于

5 < 3

false

>=

大于等于

5 >= 5

true

<=

小于等于

5 <= 3

false

eq
ne

​比较引用是否相同​​(类似 Java 的 ==
引用不相等

s1 eq s2
s1 ne s2

​逻辑运算符​

&&

逻辑与(短路)

true && false

false

`

`

逻辑或(短路)

!

逻辑非

!true

false

​位运算符​

&

按位与

12 & 10(0b1100 & 0b1010)

8(0b1000)

`

`

按位或

`12

^

按位异或

12 ^ 10(0b1100 ^ 0b1010)

6(0b0110)

~

按位取反

~12(~0b00001100在 8-bit 中)

-13(0b11110011补码)

<<

左移

12 << 2(0b1100 << 2)

48(0b110000)

>>

​带符号右移​​ (保留符号位)

-8 >> 2

-2

>>>

​无符号右移​​ (高位补 0)

-8 >>> 2

很大的正数

​赋值运算符​

=

简单赋值

var a = 10

+=, -=, *=, /=, %=, &=, `

=,^=,<<=,>>=,>>>=`

复合赋值 (Op=)

a += 5
等价于 a = a + 5


⚠️ 特别注意

  1. ++--​:Scala ​​没有​++--运算符。递增或递减需使用 += 1-= 1counter += 1

  2. ==eq​:这是最容易混淆的一点。

    • ==​ 在 Scala 中比较的是​​值​​是否相等(对于对象来说,相当于 Java 的 equals方法)。这是最常用的比较方式。

    • eq​ 比较的是​​引用​​是否指向同一个对象(相当于 Java 的 ==)。通常用于需要精确判断是否是同一个实例的场景。

    val s1 = "Hello"
    val s2 = "Hello"
    val s3 = new String("Hello")
    
    println(s1 == s2)  // true, 值相等
    println(s1 == s3)  // true, 值相等
    println(s1 eq s2)   // true (由于字符串驻留,可能指向同一对象)
    println(s1 eq s3)   // false, 肯定是不同的对象
  3. ​整数除法​​:10 / 3结果是 3,而不是 3.333...。若需浮点结果,需确保至少有一个操作数是浮点数:10.0 / 310 / 3.0

  4. ​运算符本质​​:在 Scala 中,​​运算符不是特殊的语法,而是普通的方法​​。a + b实际上是 a.+(b)的简写形式。这意味着你可以为自己的类定义运算符。


🧠 运算符优先级

当表达式中有多个运算符时,优先级高的先计算。从高到低大致如下(部分):

优先级

运算符

结合性

1

()[](括号,方法调用)

左到右

2

!~(逻辑非,按位取反)

​右到左​

3

*/%

左到右

4

+-

左到右

5

<<>>>>>(移位)

左到右

6

<<=>>=

左到右

7

==!=

左到右

8

&(按位与)

左到右

9

^(按位异或)

左到右

10

`

` (按位或)

11

&&(逻辑与)

左到右

12

`

13

=+=-=*=/=%=>>=<<=&=^=`

=` (赋值)

14

,(逗号,在某些上下文中)

左到右

记不住也没关系,​​多用 ()来明确指定计算顺序​​是最稳妥和清晰的做法。


💡 总结

Scala 的运算符大部分与其他语言类似,但有一些重要区别:

  • 牢记 ​==比较值​​,eq比较引用。

  • ​没有 ++--​,用 += 1-= 1替代。

  • 整数除法会​​截断​​小数部分。

  • 所有运算符本质上是​​方法调用​​,这体现了 Scala 面向对象和函数式融合的特点。

希望这份梳理能帮助你更好地理解和使用 Scala 运算符!

❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值