6、Scala运算符

运算符

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


算数运算符

  • 基本语法
运算符运算范例结果
+正号+33
-负号b=4;-b4
+5+510
-6-42
*3*412
/5/51
%取模(取余)7%52
+字符串相加“He”+“llo”“Hello”
  • 对于除号"/" ,它的整数和小数除是有区别的: 整数之间做除法时,只保留整数部分而舍弃小数部分。

  • 案例

package day03

object Test01_TestOperator {
  def main(args: Array[String]): Unit = {
    // 1、算术运算符
    val result1 = 10 / 3
    println(result1)

    val result2: Double = 10 / 3
    println(result2)

    //float和double在做小数运算的时候会出现精度上的偏差
    val result3: Double = 10.0 / 3
    println(result3)
    println(result3.formatted("%5.2f")) //格式化输出前面不够的补空格

    val result4: Int = 10 % 3
    println(result4)
  }
}
运行结果:
3.0
3.3333333333333335
 3.33
1

关系运算符(比较运算符)

  • 基本语法
运算符运算范例结果
==相等于4==3false
!=不等于4!=3true
<小于4<3false
>大于4>3true
<=小于等于4<=3false
>=大于等于4>=3true
  • 案例

Java实例

public class TestOperator {
    public static void main(String[] args) {
        // 比较运算符
        String s1 = "hello";
        String s2 = new String("hello");

        Boolean isEqual = s1 == s2;
        System.out.println(isEqual);
        System.out.println(s1.equals(s2));
    }
}
运行结果:
false
true

Scala实例

package day03

object Test01_TestOperator {
  def main(args: Array[String]): Unit = {
    // 2、比较运算符
    val s1: String = "hello"
    val s2: String = new String("hello")
    println(s1 == s2) //判断两值是否相等
    println(s1.equals(s2)) //判断两值是否相等
    println(s1.eq(s2)) //判断地址是否相等
  }
}
输出结果:
true
true
false

逻辑运算符

  • 基本语法

用于连接多个条件(一般类将就是关系表达式),最终的结果也是一个Boolean

假定:变量A为true,B为false

运算符描述实例
&&逻辑与(A && B )运算结果为false
II逻辑或(A II B) 运算结果为true
!逻辑非!(A && B )运算结果为true
  • 案例
package day03

object Test01_TestOperator {
  def main(args: Array[String]): Unit = {
    // 3、逻辑运算符
    def m(n: Int): Int = {
      println("m被调用")
      return n
    }

    val n = 1
    println((4 > 5) && m(n) > 0) //短路,后面的不会被调用
    println((4 > 5) & m(n) > 0)

    // 判断一个字符串是否为空
    def isNotRmpty(str: String): Boolean = {
      return str != null && !("".equals(str.trim))
    }

    println(isNotRmpty(str = null))
  }
}
运行结果:
false
m被调用
false
false

赋值运算符

  • 基本语法

赋值运算符就是将某个运算后的值,赋给指定的变量

运算符描述实例
=简单的赋值运算符,将一个表达式的值赋给一个左值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 等于 C=C%A
<<=左移后赋值C<<=2 等于C=C<< 2
>>=右移后赋值C>>=2 等于C=C>>2
&=按位与后赋值C&=2 等于 C=C&2
^=按位异或后赋值C ^ =2 等于C=C ^ 2
I=按位或后赋值CI=2 等于C=CI2

注意:Scala中没有++、–操作符,可以通过+=、-=来实现同意的效果

  • 案例

Java

public class TestOperator {
    public static void main(String[] args) {
        // 自增自减
        int x = 15;
        int y = x++;
        System.out.println("x = " + x + ", y = " + y);

        x = 15;
        y = ++x;
        System.out.println("x = " + x + ", y = " + y);

        x = 23;
        x = x ++; //需要临时变量赋x++ temp = x++; x = temp;
        System.out.println(x); // 先赋值再自加
    }
}
运行结果:
12
x = 16, y = 15
x = 16, y = 16
23

Scala

package day03

object Test01_TestOperator {
  def main(args: Array[String]): Unit = {
    // 4、赋值运算符
    var b: Byte = 10
//    b += 1 // error
//    println(b)

    var i: Int = 12
    i += 1
    println(i)
//    i++ //Scala弃用了
  }
}
输出结果:
13

位运算符

  • 基本语法

下表中变量a为60,b为13

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

object Test01_TestOperator {
  def main(args: Array[String]): Unit = {
    // 5、位运算符
    val a = 60
    println(a << 3)
    println(a >> 2)

    val j: Short = -13
    println(j << 2)
    println(j >> 2)
    println(j >>> 2) //无符号右移
  }
}
输出结果:
480
15
-52
-4
1073741820

运算符的本质

面对对象

package day03

object Test01_TestOperator {
  def main(args: Array[String]): Unit = {
    // 6、运算符的本质
    val j1: Int = 12
    val j2: Int = 37
    println(j1.+(j2))
    println(j1 + (j2))

    println(1.34.*(25))
    println(1.34 * 25)

    println(7.5 toInt).toString
  }
}
输出结果:
49
49
33.5
33.5
7

到底啦!给靓仔点个赞吧!(☞゚ヮ゚)☞

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liangzai2048

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值