• 第三章 Scala运算符


    目录

    3.1算术运算符

    3.2关系运算符

    3.3逻辑运算符

    3.4赋值运算符

    3.5位运算符

    3.6 Scala运算符本质


    3.1算术运算符

    基本语法

    运算符运算范例结果
    +正号+33
    -负号b=3,-b-3
    +5+611
    -9-27
    *6*424
    /9/33
    &取模(取余)7%52
    +字符串相加“He”+“llo”Hello

    (1)对于除号“ /  ” ,它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分;小数之间做除法时,只保留小数部分而舍弃整数部分。

    (2)对一个数取模a%b , 结果为余数部分。

    案例实操

    1. package chapter03
    2. object Test01_TestOperator {
    3. def main(args: Array[String]): Unit = {
    4. val result1:Int = 10 / 3
    5. println(result1)
    6. val result2:Double = 10 / 3
    7. println(result2)
    8. val result3:Double = 10.0 /3
    9. println(result3)
    10. val result4:Double = 10.0 /3.0
    11. println(result4.formatted("%3.2f"))
    12. val result6:Int = 10 % 3
    13. println(result6)
    14. val result5:Double = 10 % 3
    15. println(result5)
    16. }
    17. }

    运行结果

    3.2关系运算符

    基本语法

    运算符运算范例结果
    ==相等于4==3false
    !=不等于4 ! =3true
    <小于4<3false
    >大于4>3true
    <=小于等于4<=3false
    >=大于等于4>=3true

    在Java中实操

    对于字符串变量来说,使用“==”和“equals()”方法比较字符串时,其比较方法不同。 “==”比较两个变量本身的值,即两个对象在内存中的首地址。“equals()”比较字符串中所包含的内容是否相同。

    注意(1):
    如果: StringBuffer s1 = new StringBuffer("hello");
    StringBuffer s2 = new StringBuffer("hello");
    结果: s1.equals(s2) //是false

    解释:StringBuffer类中没有重新定义equals这个方法,因此这个方法就来自Object类,
    而Object类中的equals方法是用来比较“地址”的,所以等于false.

    1. public class TestOperator {
    2. public static void main(String[] args) {
    3. String a1 = "Hello";
    4. String a2 = new String("Hello");
    5. Boolean isEqual = a1 ==a2 ;
    6. System.out.println(isEqual);
    7. System.out.println(a1.equals(a2));
    8. }
    9. }

    运行结果

    Scala案例实操

    1. package chapter03
    2. object Test01_TestOperator {
    3. def main(args: Array[String]): Unit = {
    4. //比较运算符
    5. val a1:String = "hello"
    6. val a2:String = new String ("hello")
    7. println(a1==a2) //直接引用了equals方法
    8. println(a1.equals(a2)) //equals方法:比较字符串中所包含的内容是否相同。
    9. println(a1.eq(a2)) //判断引用地址是否一致
    10. }
    11. }

    运行结果

    3.3逻辑运算符

    基本语法

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

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

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

    案例实操

    1. package chapter03
    2. object Test01_TestOperator {
    3. def main(args: Array[String]): Unit = {
    4. //3逻辑运算符
    5. def m(k:Int):Int={
    6. println("m被调用")
    7. return k
    8. }
    9. val k = 1
    10. println((4>5) && m(k)>0)
    11. //如果前面是false,那么就会直接输出结果,不会再继续运行下去;短路了
    12. //如果改成4<5,那么程序就会继续运行下去,运行结果则为:m被调用;true
    13. //或者将&&改成&,这样会把前后两个表达式的值都给计算出来。运行结果为:m被调用;false
    14. //判断一个字符串是否为空
    15. def isNotEmpty(str:String):Boolean={
    16. return str != null && ! ("".equals(str.trim))
    17. }
    18. println(isNotEmpty(str=null))
    19. println("3=======")
    20. }
    21. }

    运行结果

     

    3.4赋值运算符

    基本语法

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

    运算符描述实例
    =简单的赋值运算符,将一个表达式的值赋给一个左值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
    | =按位或后赋值C | =2等于C=C | 2

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

    在Java中实操

    1. public class TestOperator {
    2. public static void main(String[] args) {
    3. //自增自减
    4. int x =15;
    5. int y = x++;
    6. System.out.println("x=:" + x + ",y=:" +y);
    7. int x1 =15;
    8. int y1 = ++x1;
    9. System.out.println("x1=:" + x1 + ",y1=:" +y1);
    10. x=23;
    11. x=x++;
    12. System.out.println(x);
    13. }
    14. }

    Java中运行结果

    最后一个 X 的结果应该是23,因为我前面测试的是 x=--x; 所以结果为22.

     

    案例实操

    1. package chapter03
    2. object Test01_TestOperator {
    3. def main(args: Array[String]): Unit = {
    4. //4赋值运算符
    5. var a:Int =98
    6. a+=1
    7. println(a)
    8. }
    9. }

    运行结果 

     

    3.5位运算符

    基本语法

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

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

    案例实操

    1. package chapter03
    2. object Test01_TestOperator {
    3. def main(args: Array[String]): Unit = {
    4. //5、位运算符
    5. val b:Byte =60
    6. println(b << 3)
    7. println(b >> 2)
    8. val s:Short = -33
    9. println(s << 3)
    10. println(s >> 3)
    11. println(s >>> 3)
    12. }
    13. }

    运行结果

     

    3.6 Scala运算符本质

    在Scala中其实是没有运算符的,使用运算符打算方法。

    (1)当调用对象的方法时,可以省略。

    (2)如果函数参数只有一个,或者没有参数,()可以省略。

    案例实操

    1. package chapter03
    2. object Test01_TestOperator {
    3. def main(args: Array[String]): Unit = {
    4. //6、运算符的本质
    5. val m1:Int = 32
    6. val m2:Int = 67
    7. println(m1.+(m2)) //点可以省略
    8. println(m1+(m2)) //省略.的例子
    9. println(m1+m2) //只有一个参数的前提上,小括号也可以省略掉
    10. println(2.5.*(20))
    11. println(2.5*20)
    12. //点可以用空格代替
    13. println(8.8.toInt)
    14. println(8.8 toInt)
    15. }
    16. }

    运行结果

     

  • 相关阅读:
    关于UOS系统下打包安装使用的问题总结
    Ajax的概念及jQuery中的Ajax的3种方法,模仿jQuery封装自己的Ajax函数
    java计算机毕业设计web扶贫产品物资管理平台源码+mysql数据库+系统+lw文档+部署
    力扣刷题day32|738单调递增的数字、714买卖股票的最佳时机含手续费、968监控二叉树
    analyzer [ik_max_word] not found for field [title]
    洛谷P1000超级玛丽游戏题解[Python, Rust, Go]
    网络安全(黑客)自学
    Vuex--模块化+命名空间
    瑞吉外卖第二天
    这三大特性,让 G1 取代了 CMS!
  • 原文地址:https://blog.csdn.net/qq_70085330/article/details/126135607