当前位置:网站首页>第三章 Scala运算符
第三章 Scala运算符
2022-08-04 15:30:00 【Hyf 。】
目录
3.1算术运算符
基本语法
| 运算符 | 运算 | 范例 | 结果 |
| + | 正号 | +3 | 3 |
| - | 负号 | b=3,-b | -3 |
| + | 加 | 5+6 | 11 |
| - | 减 | 9-2 | 7 |
| * | 乘 | 6*4 | 24 |
| / | 除 | 9/3 | 3 |
| & | 取模(取余) | 7%5 | 2 |
| + | 字符串相加 | “He”+“llo” | Hello |
(1)对于除号“ / ” ,它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分;小数之间做除法时,只保留小数部分而舍弃整数部分。
(2)对一个数取模a%b , 结果为余数部分。
案例实操
package chapter03
object Test01_TestOperator {
def main(args: Array[String]): Unit = {
val result1:Int = 10 / 3
println(result1)
val result2:Double = 10 / 3
println(result2)
val result3:Double = 10.0 /3
println(result3)
val result4:Double = 10.0 /3.0
println(result4.formatted("%3.2f"))
val result6:Int = 10 % 3
println(result6)
val result5:Double = 10 % 3
println(result5)
}
}
运行结果

3.2关系运算符
基本语法
| 运算符 | 运算 | 范例 | 结果 |
| == | 相等于 | 4==3 | false |
| != | 不等于 | 4 ! =3 | true |
| < | 小于 | 4<3 | false |
| > | 大于 | 4>3 | true |
| <= | 小于等于 | 4<=3 | false |
| >= | 大于等于 | 4>=3 | true |
在Java中实操
对于字符串变量来说,使用“==”和“equals()”方法比较字符串时,其比较方法不同。 “==”比较两个变量本身的值,即两个对象在内存中的首地址。“equals()”比较字符串中所包含的内容是否相同。
注意(1):
如果: StringBuffer s1 = new StringBuffer("hello");
StringBuffer s2 = new StringBuffer("hello");
结果: s1.equals(s2) //是false
解释:StringBuffer类中没有重新定义equals这个方法,因此这个方法就来自Object类,
而Object类中的equals方法是用来比较“地址”的,所以等于false.
public class TestOperator {
public static void main(String[] args) {
String a1 = "Hello";
String a2 = new String("Hello");
Boolean isEqual = a1 ==a2 ;
System.out.println(isEqual);
System.out.println(a1.equals(a2));
}
}
运行结果

Scala案例实操
package chapter03
object Test01_TestOperator {
def main(args: Array[String]): Unit = {
//比较运算符
val a1:String = "hello"
val a2:String = new String ("hello")
println(a1==a2) //直接引用了equals方法
println(a1.equals(a2)) //equals方法:比较字符串中所包含的内容是否相同。
println(a1.eq(a2)) //判断引用地址是否一致
}
}
运行结果

3.3逻辑运算符
基本语法
用于连接多个条件(一般来讲就是关系表达式),最终的结果也是一个Boolean值。
假定:变量A为true,B为false
| 运算符 | 描述 | 实例 |
| && | 逻辑与 | (A&&B)运算结果为false |
| || | 逻辑或 | (A||B)运算结果为true |
| ! | 逻辑非 | !(A&&B)运算结果为true |
案例实操
package chapter03
object Test01_TestOperator {
def main(args: Array[String]): Unit = {
//3逻辑运算符
def m(k:Int):Int={
println("m被调用")
return k
}
val k = 1
println((4>5) && m(k)>0)
//如果前面是false,那么就会直接输出结果,不会再继续运行下去;短路了
//如果改成4<5,那么程序就会继续运行下去,运行结果则为:m被调用;true
//或者将&&改成&,这样会把前后两个表达式的值都给计算出来。运行结果为:m被调用;false
//判断一个字符串是否为空
def isNotEmpty(str:String):Boolean={
return str != null && ! ("".equals(str.trim))
}
println(isNotEmpty(str=null))
println("3=======")
}
}运行结果

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中实操
public class TestOperator {
public static void main(String[] args) {
//自增自减
int x =15;
int y = x++;
System.out.println("x=:" + x + ",y=:" +y);
int x1 =15;
int y1 = ++x1;
System.out.println("x1=:" + x1 + ",y1=:" +y1);
x=23;
x=x++;
System.out.println(x);
}
}
Java中运行结果
最后一个 X 的结果应该是23,因为我前面测试的是 x=--x; 所以结果为22.
案例实操
package chapter03
object Test01_TestOperator {
def main(args: Array[String]): Unit = {
//4赋值运算符
var a:Int =98
a+=1
println(a)
}
}运行结果

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 |
案例实操
package chapter03
object Test01_TestOperator {
def main(args: Array[String]): Unit = {
//5、位运算符
val b:Byte =60
println(b << 3)
println(b >> 2)
val s:Short = -33
println(s << 3)
println(s >> 3)
println(s >>> 3)
}
}运行结果

3.6 Scala运算符本质
在Scala中其实是没有运算符的,使用运算符打算方法。
(1)当调用对象的方法时,点可以省略。
(2)如果函数参数只有一个,或者没有参数,()可以省略。
案例实操
package chapter03
object Test01_TestOperator {
def main(args: Array[String]): Unit = {
//6、运算符的本质
val m1:Int = 32
val m2:Int = 67
println(m1.+(m2)) //点可以省略
println(m1+(m2)) //省略.的例子
println(m1+m2) //只有一个参数的前提上,小括号也可以省略掉
println(2.5.*(20))
println(2.5*20)
//点可以用空格代替
println(8.8.toInt)
println(8.8 toInt)
}
}
运行结果

边栏推荐
- 全球电子产品需求放缓,三星手机越南工厂每周只需要干 3~4 天
- Go 事,Gopher 要学的数字类型,变量,常量,运算符 ,第2篇
- 2022杭电多校4
- 【北亚数据恢复】IBM System Storage存储lvm信息丢失,卷访问不了的数据恢复方案
- 技术分享| 小程序实现音视频通话
- Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World。
- 明明加了唯一索引,为什么还是产生重复数据?
- Codeforces Round #811 A~F
- leetcode: 241. Designing precedence for arithmetic expressions
- JVM调优-GC基本原理和调优关键分析
猜你喜欢

RepVGG学习笔记

一文详解什么是软件部署

【北亚数据恢复】IBM System Storage存储lvm信息丢失,卷访问不了的数据恢复方案

Redis-主从复制

如何优雅的消除系统重复代码?

leetcode: 255 Verify preorder traversal sequence binary search tree

弄懂#if #ifdef #if defined

Legal education combined with VR panorama, intuitively feel and learn the spirit of the rule of law
ping的原理

我在羊毛和二手群里报复性消费
随机推荐
【北亚数据恢复】IBM System Storage存储lvm信息丢失,卷访问不了的数据恢复方案
remote: Check Access Error, please check your access right or username and password!fatal: Authenti
C语言写简单三子棋
GET 和 POST 请求的区别
IP第十七天笔记
RepVGG学习笔记
程序猿七夕礼物-如何30分钟给女朋友快速搭建专属语聊房
洛谷题解P1028 数的计算
Compound Refractive Lenses for X-ray Focusing
Jupyter常用操作总结(强烈建议收藏,持续更新实用操作)
大众点评搜索相关性技术探索与实践
什么,你告诉我?作用域也分种类?
【Harmony OS】【FAQ】鸿蒙问题合集2
基于 Next.js实现在线Excel
【Harmony OS】【FAQ】Hongmeng Questions Collection 2
H5 之 文件流转base64下载
OGG判断mgr状态并自动启动脚本
小程序|炎炎夏日、清爽一夏、头像大换装
I love Tanabata hahaha
Http-Sumggling缓存漏洞分析