3. Scala运算符
3.1 运算符介绍
运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等
1) 算术运算符
2) 赋值运算符
3) 比较运算符(关系运算符)
4) 逻辑运算符
5) 位运算符
3.2 算术运算符
3.2.1 介绍
算术运算符(arithmetic)是对数值类型的变量进行运算的,在Scala程序中使用非常多
3.2.2 算数运算符一览图
3.2.3 案例演示
+,-,*,/,% 重点讲解 /、%
+、-、* 是一个道理,完全可以类推
算数运算符的运算规则和Java一样
object boke_demo01 {
def main(args: Array[String]): Unit = {
// / 的使用
var r1: Int = 10 / 3 // 3
println("r1=" + r1)
var r2: Double = 10 / 3 // 3.0
println("r2=" + r2)
var r3: Double = 10.0 / 3 // 3.333333
println("r3=" + r3)
println("r3=" + r3.formatted("%.2f")) // 3.33
// % 的使用
// % 的运算的原则: a % b = a - a/b * b
println(10 % 3) // 1
println(-10 % 3) // -1 // -10 % 3 = (-10)- (-3) * 3 = -10 + 9 = -1
println(-10 % -3) // -1 // -10 % -3 = (-10)- (3) * -3 = -10 + 9 = -1
println(10 % -3) // 1
// ++ 和 --
// 说明,在scala中没有 ++ 和 --, 而使用 +=1 和 -= 1
var num1 = 10
//num1++ 错误
num1 += 1 // 替代 num1++
//num-- 错误
num1 -= 1 // 替代 num1--
println(num1)
}
}
3.2.4 细节说明
1) 对于除号“/”,它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分。例如:var x : Int = 10/3,结果是3
2) 当对一个数取模时,可以等价a%b=a-a/b*b,这样我们可以看到取模的一个本质运算(和Java的取模运算规则一样)
3) 注意:Scala中没有++、--操作符,需要通过+=、-=来实现同样的效果
3.3 关系运算符
3.3.1 基本介绍
1) 关系运算符的结果都是boolean型,也就是要么时true,要么是false
2) 关系表达式经常用在if结构的条件中或循环结构的条件中
3) 关系运算符的使用和Java一样
3.3.2 关系运算符一览图
3.3.3 案例演示
object boke_demo01 {
def main(args: Array[String]): Unit = {
var a = 12
var b = 9
println(a > b) // true
println(a>=b) // true
println(a<=b) // false
println(a<b) // false
println(a==b) // false
println(a!=b) // true
var flag: Boolean = a > b // true
}
}
3.3.4 细节说明
1) 关系运算符组成的表达式,我们称之为关系表达式,a>b
2) 比较运算符“==”不能误写成“=”
3) 使用陷阱:如果两个浮点数进行比较,应当保证数据类型一致
3.4 逻辑运算符
3.4.1 介绍
用于连接多个条件(一般来讲就是关系表达式),最终的结果也是一个boolean值
3.4.2 逻辑运算符一览图
3.5 赋值运算符
3.5.1 介绍
赋值运算符就是将某个运算后的值,赋给指定的变量
3.5.2 赋值运算符的分类
3.5.3 赋值运算符特点
1) 运算顺序从右往左
2) 赋值运算符的左边只能是变量,右边可以是变量、表达式、常量值/字面量
3) 复合赋值运算符等价于下面的效果
比如: a+=3 等价于 a=a+3
3.5.4 位运算符
位运算符的规则和Java一样
3.5.5 Scala不支持三目运算符,在Scala中使用if-else的方式实现
val num = 5 > 4 ? 5 : 4 //没有
val num = if (5>4) 5 else 4
3.6 运算符优先级
1) 运算符有不同的优先级,所谓优先级就是表达式中的运算顺序
2) 只有单目运算符、赋值运算符是从右向左运算的
3) 运算符的优先级和Java一样
运算符优先级小结
1. () []
2. 单目运算
3. 算术运算符
4. 移位运算
5. 比较运算符(关系运算符)
6. 位运算
7. 关系运算符
8. 赋值运算
9. ,
3.6.1 运算符优先级一览图
3.7 键盘输入语句
3.7.1 介绍
在编程中,需要接收用户输入的数据,就可以就可以使用键盘输入语句来获取
3.7.2 案例演示
要求:可以从控制台接收用户信息[姓名,年龄,薪水]
import scala.io.StdIn
object boke_demo01 {
def main(args: Array[String]): Unit = {
/*
要求:可以从控制台接收用户信息,【姓名,年龄,薪水】
*/
println("请输入姓名")
// alt + enter 自动导入包
val name = StdIn.readLine()
println("请输入年龄")
val age = StdIn.readInt()
println("请输入薪水")
val sal = StdIn.readDouble()
printf("用户的信息为 name=%s age=%d sal=%.2f", name, age, sal)
}
}
3. Scala运算符的更多相关文章
- Scala 基础(七):Scala 运算符
1 算术运算符 算术运算符(arithmetic)是对数值类型的变量进行运算的,在Scala程序中使用的非常多. 细节说明: 1)对于除号“/”,它的整数除和小数除是有区别的:整数之间做除法时,只保留 ...
- Scala 运算符和集合转换操作示例
Scala是数据挖掘算法领域最有力的编程语言之一,语言本身是面向函数,这也符合了数据挖掘算法的常用场景:在原始数据集上应用一系列的变换,语言本身也对集合操作提供了众多强大的函数,本文将以List类型为 ...
- Scala:访问修饰符、运算符和循环
http://blog.csdn.net/pipisorry/article/details/52902234 Scala 访问修饰符 Scala 访问修饰符基本和Java的一样,分别有:privat ...
- Scala中的运算符
Scala和Java中的运算符用法基本一致. 一.区别 1."=="和"equals"的用法 Java: String str1 = "abc&quo ...
- 一文学会Scala
整体介绍 Scala 是一门多范式(multi-paradigm)的编程语言,设计初衷是要集成面向对象编程和函数式编程的各种特性. 联邦理工学院洛桑(EPFL)的Martin Odersky于2001 ...
- 一篇入门 -- Scala
整体介绍 Scala 是一门多范式(multi-paradigm)的编程语言,设计初衷是要集成面向对象编程和函数式编程的各种特性. 联邦理工学院洛桑(EPFL)的Martin Odersky于2001 ...
- Scala入门教程---《chang哥教你一天搞定Scala》
<chang哥教你一天搞定Scala> /** * <chang哥教你一天搞定Scala> * scala是一门多范式编程语言,集成了面向对象编程和函数式编程等多种特性. * ...
- Scala学习之路 (三)Scala的基本使用
一.Scala概述 scala是一门多范式编程语言,集成了面向对象编程和函数式编程等多种特性.scala运行在虚拟机上,并兼容现有的Java程序.Scala源代码被编译成java字节码,所以运行在JV ...
- Scala_运算符
Scala运算符与操作数的位置关系,可分为 前缀运算符.中缀运算符.后缀运算符 算术运算符 + - * / % ++ -- 关系运算符 == != < > >= <= 逻辑运 ...
随机推荐
- Lua中的迭代器与泛型for
[前言] 迭代器就是一种可以遍历一种集合中所有元素的机制,在Lua中,通常将迭代器表示为函数.每调用一次函数,就返回集合中的“下一个”元素.每个迭代器都需要在每次成功调用之后保存一些状态,这样才能知道 ...
- OpenCV中Mat总结
一.数字图像存储概述 数字图像存储时,我们存储的是图像每个像素点的数值,对应的是一个数字矩阵. 二.Mat的存储 1.OpenCV1基于C接口定义的图像存储格式IplImage*,直接暴露内存,如果忘 ...
- Zombie Scanning
1.theree -way handshake A TCP SYN packet is sent from the device that wishes to establish a connecti ...
- vue-创建新项目
1.安装node,下载地址:https://nodejs.org/en/download/ 2.安装完成后打开cmd,输入node-v,出现版本信息说明安装成功 3.输入npm install -g ...
- 金蝶K/3 报销相关SQL语句
金蝶K/3 报销相关SQL语句 use AIS20180607113701 select fopenid,* from dbo.t_XunTong_User where Fname ='' go us ...
- LNMP一键安装包添加虚拟主机、删除虚拟主机及如何使用伪静态
本文主要介绍LNMP一键安装包添加虚拟主机.删除虚拟主机及如何使用伪静态. 一.添加虚拟主机通俗点就是在VPS/服务商上添加一个网站(域名). 需要执行如下命令:/root/vhost.sh 执行后会 ...
- redis初步入门(1)
一.redis是一款高性能NOSQL系列的非关系型的数据库,其是用C语言开发的一个开源高性能键值对(key-value)数据库. 二.redis的应用场景 1.缓存(数据查询.短连接.新闻内容.商品内 ...
- (二)文档请求不同源之window.name跨域
一.基本原理 window.name不是一个普通的全局变量,而是当前窗口的名字.这里要注意的是每个iframe都有包裹它的window,而这个window 是top window的子窗口,而它自然也有 ...
- 最优装载—dp
最优装载—dp 动态规划 一 问题描述 二 问题分析 三 代码实现 package dp_Loading; import java.io.BufferedWriter; import java.io. ...
- Python数据分析基础教程
Python数据分析基础教程(第2版)(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1_FsReTBCaL_PzKhM0o6l0g 提取码:nkhw 复制这段内容后 ...