1.4 掌握Scala运算符

您所在的位置:网站首页 符号地址是地址还是内容 1.4 掌握Scala运算符

1.4 掌握Scala运算符

2023-06-15 08:49| 来源: 网络整理| 查看: 265

一、运算符等价于方法 (一)运算符即方法

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

(二)方法即运算符

1、单参方法 str.indexOf(‘a’) 与 str indexOf ‘a’ 是等价 在这里插入图片描述 2、多参方法 str.substring(2, 4) 与str substring (2, 4)是等价的 在这里插入图片描述 3、无参方法 使用后缀运算符toUpperCase之前必须导入scala.language.postfixOps类,否则会报错 在这里插入图片描述 在这里插入图片描述

二、Scala运算符 Scala与Java运算符比较

Java中,如果是基本数据类型,==与!=比较的是值;如果是复杂数据类型,比较的是对象的地址,如果不是想比较地址而是想比较真正的内容,则需要使用equals方法。 在这里插入图片描述 Scala中,如果是基本数据类型,==与!=比较的是值;如果是复杂数据类型,会隐含地调用equals进行比较,这也就意味着 Scala中不存在Java中经典的equals问题。 在这里插入图片描述

三、运算符种类 (一)中缀运算符(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里,方法调用的空括号可以省略,但是如果去掉括号可能造成副作用就带上括号。 在这里插入图片描述

四、运算符优先级 (一)简单说明

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

(二)运算优先级表

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



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3