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 等。
  • <<=>>= 分别是按位左移和右移后再赋值运算符。
  • &=^=|= 分别是按位与、按位异或和按位或后再赋值运算符。

五、位运算符




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

相关推荐
程序猿进阶2 分钟前
深入解析 Spring WebFlux:原理与应用
java·开发语言·后端·spring·面试·架构·springboot
qq_433618444 分钟前
shell 编程(二)
开发语言·bash·shell
charlie11451419119 分钟前
C++ STL CookBook
开发语言·c++·stl·c++20
袁袁袁袁满19 分钟前
100天精通Python(爬虫篇)——第113天:‌爬虫基础模块之urllib详细教程大全
开发语言·爬虫·python·网络爬虫·爬虫实战·urllib·urllib模块教程
ELI_He99925 分钟前
PHP中替换某个包或某个类
开发语言·php
m0_7482361133 分钟前
Calcite Web 项目常见问题解决方案
开发语言·前端·rust
倔强的石头10641 分钟前
【C++指南】类和对象(九):内部类
开发语言·c++
Watermelo6171 小时前
详解js柯里化原理及用法,探究柯里化在Redux Selector 的场景模拟、构建复杂的数据流管道、优化深度嵌套函数中的精妙应用
开发语言·前端·javascript·算法·数据挖掘·数据分析·ecmascript
半盏茶香2 小时前
在21世纪的我用C语言探寻世界本质 ——编译和链接(编译环境和运行环境)
c语言·开发语言·c++·算法
Evand J3 小时前
LOS/NLOS环境建模与三维TOA定位,MATLAB仿真程序,可自定义锚点数量和轨迹点长度
开发语言·matlab