第3章 scala运算符

第3章 运算符

scala运算符的使用和Java运算符的使用基本相同,只有个别细节上不同。

3.1 算数运算符

下表列出了 Scala 支持的算术运算符。

假定变量 A 为 10,B 为 20:

运算符描述实例
+加号A + B 运算结果为 30
-减号A - B 运算结果为 -10
*乘号A * B 运算结果为 200
/除号B / A 运算结果为 2
%取余B % A 运算结果为 0

3.2 关系运算符

下表列出了 Scala 支持的关系运算符。

假定变量 A 为 10,B 为 20:

运算符描述实例
==等于(A == B) 运算结果为 false
!=不等于(A != B) 运算结果为 true
>大于(A > B) 运算结果为 false
<小于(A < B) 运算结果为 true
>=大于等于(A >= B) 运算结果为 false
<=小于等于(A <= B) 运算结果为 true

思考一个问题:如下代码执行结果如何?

object Scala01_Oper {

    def main(args: Array[String]): Unit = {

        // TODO 运算符
        val s1 = new String("abc")
        //val s1 : String = null
        val s2 = new String("abc")

        // 马丁想:判断两个对象的内存地址的意义
        // 判断对象是否相等,双等号会更加直观
        // scala语法中双等号就是比较对象的内容,但是和equals不一样。是非空equals操作
        println( s1 == s2 )
        println( s1.equals(s2) )
        println( s1.eq(s2) ) //false  eq方法在编译后就是java中的双等号  比较的是地址,因此不同

        val s = "abc"  2
        println(s)
    }
}

3.3 赋值运算符

以下列出了 Scala 语言支持的赋值运算符:

运算符描述实例
=简单的赋值运算,指定右边操作数赋值给左边的操作数。C = A + B 将 A + B 的运算结果赋值给 C
+=相加后再赋值,将左右两边的操作数相加后再赋值给左边的操作数。C += A 相当于 C = C + A
-=相减后再赋值,将左右两边的操作数相减后再赋值给左边的操作数。C -= A 相当于 C = C - A
*=相乘后再赋值,将左右两边的操作数相乘后再赋值给左边的操作数。C *= A 相当于 C = C * A
/=相除后再赋值,将左右两边的操作数相除后再赋值给左边的操作数。C /= A 相当于 C = C / A
%=求余后再赋值,将左右两边的操作数求余后再赋值给左边的操作数。C %= A is equivalent to C = C % A
<<=按位左移后再赋值C <<= 2 相当于 C = C << 2
>>=按位右移后再赋值C >>= 2 相当于 C = C >> 2
&=按位与运算后赋值C &= 2 相当于 C = C & 2
^=按位异或运算符后再赋值C ^= 2 相当于 C = C ^ 2
|=按位或运算后再赋值C |= 2 相当于 C = C | 2

思考一个问题:为什么在上面的运算符中没有看到 ++, --?

++运算有歧义,容易理解出现错误,所以scala中没有这样的语法,所以采用 +=的方式来代替。

3.4 逻辑运算符

下表列出了 Scala 支持的逻辑运算符。

假定变量 A 为 1,B 为 0:

运算符描述实例
&&逻辑与(A && B) 运算结果为 false
||逻辑或(A || B) 运算结果为 true
!逻辑非!(A && B) 运算结果为 true

3.5 位运算符

如果指定 A = 60; 及 B = 13; 两个变量对应的二进制为

A = 0011 1100

B = 0000 1101

Scala 中的按位运算法则如下:

运算符描述实例
&按位与运算符(a & b) 输出结果 12 ,二进制解释: 0000 1100
|按位或运算符(a | b) 输出结果 61 ,二进制解释: 0011 1101
^按位异或运算符(a ^ b) 输出结果 49 ,二进制解释: 0011 0001
~按位取反运算符(~a ) 输出结果 -61 ,二进制解释: 1100 0011, 在一个有符号二进制数的补码形式。
<<左移动运算符a << 2 输出结果 240 ,二进制解释: 1111 0000
>>右移动运算符a >> 2 输出结果 15 ,二进制解释: 0000 1111
>>>无符号右移A >>>2 输出结果 15, 二进制解释: 0000 1111

思考一个问题:位运算有啥用?你用过吗或你接触过吗?

3.6 运算符本质

在Scala中其实是没有运算符的,所有运算符都是方法。

  • scala是完全面向对象的语言,所以数字其实也是对象
  • 当调用对象的方法时,点.可以省略
  • 如果函数参数只有一个,或者没有参数,()可以省略
object Scala02_Oper {

    def main(args: Array[String]): Unit = {

        // TODO 运算符
        // scala是一个完全面向对象的语言,数字也是对象
        val r = 10.+(10)
        val j = 10 + 10
        val k = "abc".*(2)
        // 马丁想
        // 1. 方法在调用时,可以省略点
        // 2. 方法如果参数只有一个或没有,那么小括号可以省略
        val user = new User()
        println(user toString()) //省略 点.
        println(user toString) //省略括号() 和点 .
        println(user.toString)  // 省略括号 ---常用

    }
}
```## 尚硅谷2022Java大数据线下面授班 完结
<img src="http://typora-markdown-2022.oss-cn-shanghai.aliyuncs.com/uPic/2022/06/11/image-20220611100332425.png" alt="image-20220611100332425" style="zoom: 50%;" />

链接: https://pan.baidu.com/s/1vcN1-S5st3azs_VRmxXMAg 提取码: s3vj 
失效加V:x923713

## QQ交流群 欢迎加入690763341

<img src="http://typora-markdown-2022.oss-cn-shanghai.aliyuncs.com/uPic/2022/06/11/image-20220611100658881.png" alt="image-20220611100658881" style="zoom:50%;" />


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值