Scala 运算符

Scala 运算符

一、算术运算符

1、基本语法

Scala 运算符的使用和Java运算符的使用基本相同,只有个别细节上不同
在这里插入图片描述

2、代码示例

注意:Scala里面做除数运算的话,只会保留商,余数直接舍掉了,要是想有小数的话,除数和被除数里面一定要有一个小数,那么就可以自动转换为小数除法

package scala_xuexi01

class test10_yunsuanfu {

}
object test10_yunsuanfu{
  def main(args: Array[String]): Unit = {
    //算术运算符
    val result1 = 10 /3 //注意:整数除法只保留商,余数就直接舍掉了
    println(result1)
    val result2:Double = 10 / 3 //直接转换成double类型的也不行,因为是先进行整数相除,然后才进行类型转换所以得到的是3.0
    println(result2)

    val result3:Double = 10.0 / 3 //只有这两个数里面有一个是小数类型都会转变为小数除法,低精度自动转变为高精度
//    println(result3)
    println(result3.formatted("%5.2f")) //保留两位数的话使用formatted()方法,里面%.2f 保留两位小数
    val result4:Double = 10 / 7.0
    println(result4.formatted("%.2f"))

    //取余运算
    val result5:Int = 10 % 3  //直接取出余数,没有商
    println(result5)
  }
}

二、比较运算符

1、基本语法

在这里插入图片描述

2、代码示例

在Scala里面判断两个字符串变量是否相等不用像java里一样,需要使用equals()方法,判断变量里面的内容,直接== 就可以判断出来,要是想判断两个变量的引用地址地址的话,使用eq() 方法

// 2、比较运算符
    val s1:String = "hello"
    val s2:String = new String("hello")
    println(s1==s2)  //在scala 里面判断字符相等于直接判断了内容
    println(s1.equals(s2)) //这个和上面那个等价
    println(s1.eq(s2))  //eq方法是用来判断引用地址是否相同

三、逻辑运算符

1、基本语法

用于连接多个条件(一般来讲就是关系表达式),最终的结果也是一个Boolen 值,假定:变量A为true,B为false
在这里插入图片描述

2、代码示例

在进行逻辑判断的时候,&& 和 || 都具有短路特征,只要一个不符合条件,后面的就不会执行了

    //逻辑运算符
    def m1(n:Int):Int = {
      println("m被调用")
      return n
    }
    val n = 1
    println((4>5)&& m1(n)>0) //&& 和 || 具有短路特征,第一个不合符要求直接就中断了,后面那个不会再执行

    //使用场景用的比较多的地方,判断一个字符串是否为空
    def isNotEmpty(str: String):Boolean ={
      //return !(str == "") //因为这个判断这个str是否为空,== "" 说明为空的时候是false 然后取反不为空的时候才为true
      return str != null && !("".equals(str)) //如果按照上面那样的话,传入进去一个null值,
    }                         //没有字符但是还是会判定成true 这样反过来,用equls把str传入进去就不可以避免这种问题了
    println(isNotEmpty(null))
  }

四、赋值运算符

1、基本语法

赋值运算符就是将某个运算后的值,赋给指定的变量
注意:Scala 中没有 ++ ,–操作符,可以通过+=,-=来实现同样的效果
在这里插入图片描述
在这里插入图片描述

2、代码示例

注意:赋值只能使用varval常量不行,+=1的时候注意那个1是Int类型的,如果不转换会报错

//4、赋值运算符
    var b:Byte = 12  //注意:赋值只能用变量var,常量val不行,还有注意类型问题,b+=1,这个1是Int类型的
    var i = 20
    b  += 1
    i +=1
    println(b)
    println(i)

五、位运算符

1、基本语法

逻辑 & 与 位运算& 的区别,逻辑&是具有短路的,
下表中a为60,b为13
在这里插入图片描述

2、代码示例

位运算符<< 2往左边移两位,移动几位也就是2的几次方,所以就是结果乘以2的2次方

//5、位运算符
    //<< 往左边移动两位,>> 往右边移动两位  移动几位就是2的几次方
    val a:Byte = 60  //这种位运算的结果会自动的转换成Int类型的,所以不用担心数值溢出的问题
    println(a << 3)  // << 往左边移三位,也就是2的三次方,所以结果就是480
    println(a>>2)  //往右边移动两位,也就事除以2的两次方法,所以结果是15

    val bb:Short = -13
    println(bb<<2)  //还是一样的直接乘以2的次方,结果是-52
    println(bb>>2)

6、运算符的本质

	在Scala里面一切皆是对象方法,连运算符 `+` 都是一个方法,可以直接`.+` 进行调用
//6、运算符的本质
    //Scala中的运算符,本质上都是对象的一个方法调用
    //连 + 都是一个对象的方法,相当于是直接调用了,后面那个要加的数就是传入的参数
    val n1:Int = 12
    val n2:Int = 37
    println(n1.+(n2))
    println(n1 + n2)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值