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

五、位运算符




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

相关推荐
MapleLea1f19 分钟前
26届JAVA 学习日记——Day14
java·开发语言·学习·tcp/ip·程序人生·学习方法
小汤猿人类20 分钟前
SpringTask
开发语言·python
爪哇学长26 分钟前
解锁API的无限潜力:RESTful、SOAP、GraphQL和Webhooks的应用前景
java·开发语言·后端·restful·graphql
老赵的博客34 分钟前
QT 自定义界面布局要诀
开发语言·qt
p-knowledge1 小时前
建造者模式(Builder Pattern)
java·开发语言·建造者模式
网络安全(king)1 小时前
【Python】【持续项目】Python-安全项目搜集
开发语言·python·安全
工业甲酰苯胺1 小时前
Python脚本消费多个Kafka topic
开发语言·python·kafka
麻花20131 小时前
C#之WPF的C1FlexGrid空间的行加载事件和列事件变更处理动态加载的枚举值
开发语言·c#·wpf
_黎明1 小时前
【Swift】字符串和字符
开发语言·ios·swift
聊无生2 小时前
JavaSrcipt 函数高级
开发语言·前端·javascript