Spark大数据处理学习笔记1.4 掌握Scala运算符

news/2024/11/8 5:43:46/

文章目录

  • 一、学习目标
  • 二、运算符等价于方法
    • (一)运算符即方法
    • (二)方法即运算符
      • 1、单参方法
      • 2、多参方法
      • 3、无参方法
  • 三、Scala运算符
    • (一)运算符分类表
    • (二)Scala与Java运算符比较
  • 四、运算符种类
    • (一)中缀运算符(Infix Operator)
    • (二)前缀运算符(Prefix Operator)
    • (三)后缀运算符(Postfix Operator)
  • 五、运算符优先级
    • (一)简单说明
    • (二)运算优先级表

一、学习目标

1.理解Scala运算符与方法的等价性
2.掌握Scala常用运算符
3.理解Scala运算符种类

二、运算符等价于方法

  • Scala中运算符即方法、方法即运算符。Scala中运算符其实是普通方法调用的另一种表现形式,运算符的使用其实就是隐含地调用对应的方法。

(一)运算符即方法

  • op运算符与.op方法调用是等价的,op表示运算符:+、-、*、/……
    演示x + y与x.+(y)的等价性
    在这里插入图片描述

(二)方法即运算符

1、单参方法

val str = “international”
val x1 = str.indexOf(‘a’)
val x2 = str indexOf ‘a’
1
2
3
str.indexOf(‘a’) 与 str indexOf ‘a’ 是等价的

2、多参方法

val str = “international”
val x3 = str.substring(2, 4)
val x4 = str substring (2, 4) // 如果参数有多个,需要用小括号包起来
1
2
3

  • str.substring(2, 4) 与str substring (2, 4)是等价的

在这里插入图片描述

3、无参方法

val str = “international”
val x5 = str.toUpperCase()
val x6 = str.toUpperCase // 方法调用时如果不需要传入任何参数,小括号可以省略
val x7 = str toUpperCase // 这种写法,如果没有参数,则括号不用写
1
2
3
4

  • 注意:使用后缀运算符toUpperCase之前必须导入scala.language.postfixOps类,否则会报错
    在这里插入图片描述

import scala.language.postfixOps
val str = “international”
val x5 = str.toUpperCase()
val x6 = str.toUpperCase // 方法调用时如果不需要传入任何参数,小括号可以省略
val x7 = str toUpperCase // 这种写法,如果没有参数,则括号不用写
在这里插入图片描述

三、Scala运算符

(一)运算符分类表

运算符类型 运算符
算术运算 +、-、*、/
关系运算 >、<、>=、<=
逻辑运算 && 、 位运算 >>、>>>、<< 、~、 &、
比较运算 ==、!=

(二)Scala与Java运算符比较

  • Scala和Java运算符基本相同,不同之处在于比较运算符。

  • Java中,如果是基本数据类型,==与!=比较的是值;如果是复杂数据类型,比较的是对象的地址,如果不是想比较地址而是想比较真正的内容,则需要使用equals方法。

  • Scala中,如果是基本数据类型,==与!=比较的是值;如果是复杂数据类型,会隐含地调用equals进行比较,这也就意味着 Scala中不存在Java中经典的equals问题。
    *在这里插入图片描述

val a = 100
val b = a + 0
a == b
val str1 = “Scala”
val str2 = str1 + “”
str1 == str2
str1.equals(str2)
在这里插入图片描述

四、运算符种类

(一)中缀运算符(Infix Operator)

运算符符在两个操作数之间,2 + 3 等同于2.+(3)
在这里插入图片描述

(二)前缀运算符(Prefix Operator)

运算符在唯一的操作数之前 :-1、+3、 ~0xFF、!false

-1等同于1.unary_-,前缀运算符如同中缀运算符一样,也是方法调用的另一种方式,不同的是,方法名要在符号前加上前缀unary_ 。
在这里插入图片描述

能作为前缀运算符的运算符只有+、-、!、~四种。如果你自己定义了unary_!方法就可以使用!前缀运算符来调用方法了,但是即使你定义了unary_*,也不能用来调用该方法,因为不是四种可用的前缀运算符之一。
在这里插入图片描述

(三)后缀运算符(Postfix Operator)

运算符在唯一的操作数之后str toUpperCase 等同于 str.toUpperCase(),后缀运算符不用点或括号调用无参方法。在Scala里,方法调用的空括号可以省略,但是如果去掉括号可能造成副作用就带上括号。

五、运算符优先级

(一)简单说明

由于Scala并没有真正的运算符,运算符其实是方法的一种形式,所以此处运算符的优先级,其实就是指方法的优先级。在Scala中方法的执行是有优先级的区别的,这也是为了解决传统运算符优先级问题。

例如:3 + 2 * 5,我们期望获得的是13,但是根据Scala特点,Scala中所有运算符其实就是方法,那么按照这种说法,表达式应该等同于(3).+(2) 得到5,(5).*(5) 得到25,与我们的预期不符!Scala如何解决此问题呢?靠的是运算符优先级。

在这里插入图片描述

(二)运算优先级表

具有最高优先级的运算符在表的顶部,那些优先低级排在底部。在一个表达式,优先级高的运算符将首先计算。
在这里插入图片描述

  • 如果运算符以=结尾,且运算符并非比较运算符 <=、>=、==或=,则运算符优先级等同于=,即优先级最低,例如+=、-=等;同级别优先级从左到右统计;可以使用括号改变优先级,这是个好习惯,特别是在Scala这种可能过于简洁的语言中。
  • 特殊情况:以:字符结尾的方法由它的右操作数调用,并传入左操作数,以其它字符结尾的方法与之相反。a :: b 对应的是 (b).::(a) 而不是 (a).::(b)。

http://www.ppmy.cn/news/350557.html

相关文章

android 局域网对讲机

参考了一些代码&#xff0c;实现了局域网的实时语音对讲功能&#xff0c;只要同网段局域网即可通话&#xff0c;文字聊天&#xff0c;传输文件等&#xff0c;包含了飞鸽传输的功能。 主要是录音发送和接收播放录音比较重要。录音线程&#xff1a; Java代码 public class Audi…

【对讲机的那点事】玩公网对讲机,你知道公网对讲机的模块吗?

公网对讲机模块的大量使用&#xff0c;让终端厂家的开发、生产变得相当容易&#xff0c;有人说&#xff0c;模块是实现复杂到简单的桥梁&#xff0c;是托起行业发展的翅膀&#xff0c;但是有多少公网集群对讲机经销商对公网对讲机模块有过了解吗&#xff1a; 如果说模拟集群向数…

【对讲机的那点事】免费的公网对讲机平台你敢用吗?

公网对讲由前几年的概念阶段到现在迅速爆发阶段,凭借其音质清晰、没有距离限制、GPS定位、单呼选呼等集群功能强大等优势迅速占据了对讲市场的半壁江山,但是公网对讲也有他的短板,即公网对讲的使用是需要收费的,这也是部分用户不选择公网对讲的原因之一,下面我们就把公网对…

this 关键字的用法,super 关键字的用法,this 与 super 的区别

this 是自身的一个对象&#xff0c;代表对象本身&#xff0c;是指向对象本身的一个指针。 用法分为3种&#xff1a; 1.普通的直接引用&#xff0c;this 相当于是指向当前对象本身 2.形参与成员名字重名&#xff0c;用this 来区分 public Student(String name, int age) {this.…

Vue第八篇Vue3

一 Vue3的变化 1.性能的提升 打包大小减少41% 初次渲染快55%, 更新渲染快133% 内存减少54% 2.源码的升级 使用Proxy代替defineProperty实现响应式 重写虚拟DOM的实现和Tree-Shaking 3.拥抱TypeScript Vue3可以更好的支持TypeScript 4.新的特性 Composition API&#…

计算机各外设的作用,计算机外设的功能是什么

外部设备简称“外设”&#xff0c;是指连在计算机主机以外的硬件设备。对数据和信息起着传输、转送和存储的作用&#xff0c;是计算机系统中的重要组成部分。随着我国计算机应用的迅速普及以及网络化、信息化应用的日益广泛&#xff0c;使市场对计算机外部设备的需求不断增长&a…

小学是不是可以用计算机,小学生怎样利用计算机学习

计算机(computer)俗称电脑&#xff0c;是一种用于高速计算的电子计算机器&#xff0c;可以进行数值计算&#xff0c;又可以进行逻辑计算&#xff0c;还具有存储记忆功能。下面是unjs小编整理的相关内容&#xff0c;欢迎大家阅读! (1)学习学校知识 同学们可以依靠计算机来学习学…

计算机主机和外设包括什么,计算机外设包括哪些

外部设备简称“外设”&#xff0c;是指连在计算机主机以外的硬件设备。对数据和信息起着传输、转送和存储的作用&#xff0c;是计算机系统中的重要组成部分。计算机外设是什么?下面是小编给大家整理的一些相关信息&#xff0c;希望对大家有帮助! 随着我国计算机应用的迅速普及…