Spark基础学习笔记:Scala运算符

一、运算符等价于方法

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

(一)运算符即方法

在这里插入图片描述

(二)方法即运算符

1、单参方法

val str = "abcdef"
val x1 = str.indexOf('c')
val x2 = str indexOf 'c'

在这里插入图片描述

2、多参方法

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

在这里插入图片描述

3、无参方法

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

在这里插入图片描述

二、Scala运算符

(一)运算符分类表

在这里插入图片描述

(二)Scala与Java运算符比较

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

在这里插入图片描述

三、运算符种类

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

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

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

运算符在唯一的操作数之前 :-1、+3、 ~0xFF、!false
在这里插入图片描述

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

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

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

四、运算符优先级

(一)简单说明

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

在这里插入图片描述

(二)运算优先级表

具有最高优先级的运算符在表的顶部,那些优先低级排在底部。在一个表达式,优先级高的运算符将首先计算

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/py20010218/article/details/125344439
今日推荐