Scala—运算符—用法详解

Scala

Scala-运算符


Scala 的设计理念强调简洁与表达能力,与许多其他语言不同,Scala 不区分普通方法和操作符

所有的操作符都是方法的别名,运算符其实就是方法。

换句话说,+、-、* 等操作符其实是某个方法的名称,它们也可以像普通方法一样被调用。

一、算数运算符

运算符 运算 范例 结果
+ 正号 +3 3
- 负号 b = 4; -b -4
+ 加法 5 + 5 10
- 减法 6 - 4 2
* 乘法 3 * 4 12
/ 除法 5 / 5 1
% 取模(取余) 7 % 5 2
+ 字符串相加 "He" + "llo" "Hello"
scala 复制代码
val sum = 5 + 5
println(sum)  // 输出:10

val difference = 6 - 4
println(difference)  // 输出:2

val product = 3 * 4
println(product)  // 输出:12

  • 除法 /:除法操作有两种情况:

    • 整数除法 :如果两个整数相除,会舍弃小数部分,返回商的整数部分。
    • 浮点数除法 :如果其中有浮点数,结果会保留小数部分。
    scala 复制代码
    val quotientInt = 5 / 2
    println(quotientInt)  // 输出:2

    整数之间的除法会去掉小数部分,结果是 2,而 5 / 2 实际上是 2.5

    scala 复制代码
    val quotientDouble = 5.0 / 2
    println(quotientDouble)  // 输出:2.5

    如果其中有一个操作数是浮点数,结果就会保留小数部分。


  • 取模 %:

取模操作,返回两个数相除后的余数。和 Java 中的取模规则一样,结果的符号和除数的符号相同。

scala 复制代码
  val remainder = 7 % 5
  println(remainder)  // 输出:2

  val negativeRemainder = -7 % 5
  println(negativeRemainder)  // 输出:-2

二、关系运算符

运算符 运算 范例 结果
== 相等于 4 == 3 false
!= 不等于 4 != 3 true
< 小于 4 < 3 false
> 大于 4 > 3 true
<= 小于等于 4 <= 3 false
>= 大于等于 4 >= 3 true

Tips:Java与Scala '=='号的区别

语言 运算符 == 运算符 == 的行为
Java == 比较对象的引用 == 比较的是对象在内存中的地址(即引用是否相同),对于字符串和对象要使用 equals() 来比较内容。
Scala == 比较对象的内容 == 在 Scala 中会调用 equals() 方法,因此比较的是对象的内容,而不是引用。对于基本类型比较值。
  1. Java 中的 == 运算符
java 复制代码
public class Main {
    public static void main(String[] args) {
        String str1 = new String("hello");
        String str2 = new String("hello");
        //`==` 比较的是引用,即 `str1` 和 `str2` 是两个不同的对象
        System.out.println(str1 == str2);  // 输出:false
        // `equals()` 比较的是字符串的内容。
        System.out.println(str1.equals(str2));  // 输出:true
    }
}
java 复制代码
public class Main {
    public static void main(String[] args) {
        int a = 5;
        int b = 5;
        
        System.out.println(a == b);  // 输出:true
    }
}
  • 对于基本数据类型(例如 int),== 比较的是值,因此 a == b 输出 true

  1. Scala 中的 == 运算符
  • == 用于比较对象的内容(即等价于 Java 的 equals()
  • 如果是基本数据类型,== 比较的是值。

== 比较字符串的内容

scala 复制代码
object Main extends App {
  val str1 = "hello"
  val str2 = "hello"
  
  println(str1 == str2)  // 输出:true
}
scala 复制代码
case class Person(name: String, age: Int)

object Main extends App {
  val person1 = Person("John", 30)
  val person2 = Person("John", 30)
  
  println(person1 == person2)  // 输出:true
}
scala 复制代码
object Main extends App {
  val a = 5
  val b = 5
  
  println(a == b)  // 输出:true
}
  • 对于基本数据类型(如 Int),== 直接比较值,因此 a == b 输出 true

三、逻辑运算符

逻辑运算符优先级:

  1. !(逻辑非)具有最高的优先级。
  2. &&(逻辑与)优先级高于 ||(逻辑或)。

如果有多个运算符,可以使用括号来明确运算顺序,避免混淆。


四、赋值运算符

运算符 描述 示例
= 简单赋值运算符 C = A + BA + 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
  • 在 Scala 中,没有 ++-- 运算符。如果需要自增或自减,可以使用 +=-= 来代替。例如,C += 1 可以实现 C++ 的效果,C -= 1 可以实现 C-- 的效果。
  • +=-=*=/=%= 等运算符在 Scala 中表示对现有变量进行修改,效果等同于 C = C + AC = C - A 等。
  • <<=>>= 分别是按位左移和右移后再赋值运算符。
  • &=^=|= 分别是按位与、按位异或和按位或后再赋值运算符。

五、位运算符




整理不易,对您有帮助的话,还请三连呀~🤣🤣🤣谢谢啦

相关推荐
qq_401700411 天前
QT C++ 好看的连击动画组件
开发语言·c++·qt
t198751281 天前
广义预测控制(GPC)实现滞后系统控制 - MATLAB程序
开发语言·matlab
报错小能手1 天前
线程池学习(六)实现工作窃取线程池(WorkStealingThreadPool)
开发语言·学习
一条咸鱼_SaltyFish1 天前
[Day10] contract-management初期开发避坑指南:合同模块 DDD 架构规划的教训与调整
开发语言·经验分享·微服务·架构·bug·开源软件·ai编程
额呃呃1 天前
STL内存分配器
开发语言·c++
七点半7701 天前
c++基本内容
开发语言·c++·算法
嵌入式进阶行者1 天前
【算法】基于滑动窗口的区间问题求解算法与实例:华为OD机考双机位A卷 - 最长的顺子
开发语言·c++·算法
No0d1es1 天前
2025年12月 GESP CCF编程能力等级认证Python三级真题
开发语言·php
lalala_lulu1 天前
什么是事务,事务有什么特性?
java·开发语言·数据库
CCPC不拿奖不改名1 天前
python基础:python语言中的函数与模块+面试习题
开发语言·python·面试·职场和发展·蓝桥杯