Scala编程学习之三-运算符篇
1.运算符介绍
运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。
1)算术运算符
2)赋值运算符
3)比较运算符(关系运算符)
4)逻辑运算符【与,或,非】
5)位运算符 (位运算 ~ | ^ >> << >>>…)
# 1.1 运算符的一览图
## 1.2案例演示
案例演示算术运算符的使用(Operator.scala)。
+, - , * , / , % 重点讲解 /、%
+、-、* 是一个道理,完全可以类推。
算数运算符的运算规则和Java一样
案例:
var r1 : Int = 10 / 3 // 3 [不会进行四舍五入]
println("r1=" + r1)
var r2 : Double = 10 / 3 【3.0 1.先得到 3 => 3.0 】
println("r2=" + r2)
var r3 : Double = 10.0 / 3 [3.3333333..]
println("r3=" + r3 )
println("r3=" + r3.formatted("%.2f") ) // 格式化输出, 保留小数点2位,并且进行四舍五入
## 1.3细节说明
1)对于除号“/”,它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分。 例如:var x : Int = 10/3 ,结果是 3
2)当对一个数取模时,可以等价 a%b=a-a/b*b , 这样我们可以看到取模的一个本质运算(和java 的取模规则一样)。
3)注意:Scala中没有++、–操作符,需要通过+=、-=来实现同样的效果
4)代码
object Demo02 {def main(args: Array[String]): Unit = {var i = 10//i++ ++i 没有了//i-- --i 没有//使用 += -= 替代. goi += 1i -= 1//取模println("res0=" + 10 % 3) // 1println("res0=" + -10 % 3) // => -10 - (-10)/3 * 3 => -10 - (-9) = -1println("res0=" + -10 % -3) // =>-10 - (-10)/(-3) * -3 =>-10 - (-9) = -1println("res0=" + 10 % -3) // =>10 - (10)/(-3) * -3 => 10 - 9 = 1}
}
## 1.4小练习
1)假如还有97天放假,问:xx个星期零xx天
2)定义一个变量保存华氏温度,华氏温度转换摄氏温度的公式为:5/9*(华氏温度-100),请求出华氏温度对应的摄氏温度。[测试:232.5]
object Exercise01 {def main(args: Array[String]): Unit = {/*假如还有97天放假,问:xx个星期零xx天*///1. 先定义一个变量,来保存天数//2. 使用 / 和 % 方法val days = 97printf("距离放假%d个星期零%d天\n", days / 7, days % 7)/*定义一个变量保存华氏温度,华氏温度转换摄氏温度的公式为:5/9*(华氏温度-100),请求出华氏温度对应的摄氏温度思路就是定义变量保存摄氏温度和华氏温度,注意精度*/val huashi = 232.5//套用公式 [坑 ]val sheshi = 5.0 / 9 * (huashi - 100)println("摄氏温度为" + sheshi.formatted("%.2f"))}
}
2.关系运算符(比较运算符)
## 2.1基本介绍
关系运算符的结果都是Boolean型,也就是要么是true,要么是false
关系表达式 经常用在 if结构的条件中或循环结构的条件中
关系运算符的使用和java一样
## 2.2关系运算符的一览图
## 2.3细节说明
1)关系运算符的结果都是Boolean型,也就是要么是true,要么是false。
2)关系运算符组成的表达式,我们称为关系表达式。 a > b
3)比较运算符“==”不能误写成“=”
4)使用陷阱: 如果两个浮点数进行比较,应当保证数据类型一致.
3逻辑运算符
4.赋值运算符
## 4.1案例
object BitDemo {
def main(args: Array[String]): Unit = {
val res = -3 & -2 //运算一定要知道.
println("res=" + res)//-4
}
}
5.位运算符
6.运算符的特别说明
Scala不支持三目运算符 , 在Scala 中使用 if – else 的方式实现。
## 6.1小练习
案例1:求两个数的最大值
案例2:求三个数的最大值
object MaxVal {def main(args: Array[String]): Unit = {/*案例1:求两个数的最大值*/val n1 = 20val n2 = 40val n3 = 89//scala中,没有三目,使用if -- else 替代//val res = n1 > n2 ? n1 : n2var max = if (n1 > n2) n1 else n2println("max=" + max)//肯 汤普森 =>google [go] 2000年 09=》 go =>替代java 《---》//求3个数的最大值max = if (max > n3) max else n3println("max=" + max)}
}
6.2运算符优先级
运算符有不同的优先级,所谓优先级就是表达式运算中的运算顺序。如右表,上一行运算符总优先于下一行。
只有单目运算符、赋值运算符是从右向左运算的。
3)运算符的优先级和Java一样。
4)小结运算符的优先级
() [] 可以直接提示优先级
单目运算 (! ~)
算术运算符.
位移运算
关系运算符(比较运算符)
位运算
逻辑运算
赋值运算
7.scala键盘输入语句
7.1介绍
在编程中,需要接收用户输入的数据,就可以使用键盘输入语句来获取。InputDemo.scala
7.2案例演示
1)要求:可以从控制台接收用户信息,【姓名,年龄,薪水】。
2)Scala的实现 【 import scala.io.StdIn】
3)代码
//小技巧
//1. 如果要看一个类或者object的内容 scala.io.StdIn // StdIn
//2. 如果要看一个包的内容, 把光标定位 io 上,输入 ctrl+b
import scala.io.StdInobject InputDemo {def main(args: Array[String]): Unit = {/*要求:可以从控制台接收用户信息,【姓名,年龄,薪水】。*/println("请输入name")//直接调用StdIn 这个object的静态方法。val name = StdIn.readLine()println("name=" + name)println("age")val age = StdIn.readInt()println("age=" + age)println("薪水")val sal = StdIn.readDouble()println("sal=" + sal)}
}
Scala编程学习之三-运算符篇相关推荐
- python3多线程编程_Python 3多线程编程学习笔记-基础篇
本文是学习<Python核心编程>的学习笔记,介绍了Python中的全局解释器锁和常用的两个线程模块:thread, threading,并对比他们的优缺点和给出简单的列子. 全局解释器锁 ...
- 编程学习笔记(第一篇)面向对象技术高级课程:绪论-软件开发方法的演化与最新趋势(1)...
软件工程的课程,对于从事大中型的软件开发是至关重要的一门课程. <面向对象技术高级课程>深入.系统.完整地讲解当今主流的面向对象软件开发方法的分析.设计.实现及重构方法,深入讲解UML语言 ...
- 嵌入式Linux系统编程学习之三十三网络相关概念
文章目录 一.网络相关名词的概念 1.套接口 2.端口号 3.IP 地址 二.Socket 概念 三.Socket 类型 四.Socket 的信息数据结构 五.数据存储优先顺序的转换 六.地址转格式转 ...
- 嵌入式Linux系统编程学习之三vi编辑器
文章目录 前言 一.插入文本 二.删除与修改 三.光标的移动 四.查找与替换 五.块操作 六.结束编辑 前言 在Linux下编程,使用编辑器vi(vim).gedit或Emacs,编译链接器gcc,调 ...
- 嵌入式Linux系统编程学习之三十四 Socket 编程
文章目录 一.使用 TCP 的流程图 1.1 头文件包含 1.2 socket 函数 1.3 bind 函数 1.4 listen 函数 1.5 accept 函数 1.6 recv 函数 1.7 s ...
- 嵌入式Linux系统编程学习之三十一线程的属性
文章目录 前言 一.线程属性初始化 二.设置绑定属性 三.设置分离属性 四.获取线程优先级 五.设置优先级 前言 pthread_create 的第 2 个参数 attr 是一个结构体指针,结构体 ...
- 嵌入式Linux系统编程学习之三十线程的同步
文章目录 一.条件变量 1.创建和注销 2.等待和激发 3.其他 二.信号灯 1.创建和注销 2.点灯和灭灯 3.获取灯值 4.其他 一.条件变量 条件变量是利用线程间共享的全局变量进行同步的一种 ...
- OSG三维渲染引擎编程学习之三十六:“第四章:OSG几何体绘制” 之 “4.1 OSG基础绘图类”
目录 第四章 OSG几何体绘制 4.1 OSG基础绘图类 4.1.1 Drawable可绘制类 4.1.2 PrimitiveSet图元集 第四章 OSG几何体绘制
- OSG三维渲染引擎编程学习(全系列开展OSG学习)
目录 第一章:OpenSceneGraph介绍 第二章:OSG数学基础 第三章:OSG场景组织 第四章:OSG几何体绘制 第五章:OSG场景渲染 第六章:OSG场景工作机制 第七章:OSG场景图形交互 ...
最新文章
- 2021年大数据Spark(十二):Spark Core的RDD详解
- Strategy Analytics:物联网安全令人担忧,成本节约效益也不确定
- 【 FPGA 】UltraFast设计方法学笔记(RTL代码风格1)
- php捕获Fatal error错误与异常处理
- 关于java嵌入式数据库的选择,强烈建议H2 嵌入式数据库
- 【渝粤教育】广东开放大学 Python基础与应用 形成性考核 (21)
- DataFrame.to_dict(orient='dict')英文文档翻译
- 运营商取消话费余额有效期后改收闲置费
- Apriori进行关联分析
- Android 仿iOS弹窗
- psd 替换智能图层的的实现-个性化定制网站
- 给科研新手的论文写作指南
- java创建一个问卷调查界面_十分钟搭建自己的问卷调查系统 | 码云周刊
- VC6连接Oracle10g
- 【重点】心田花开:三年级教材知识点汇总
- 汽车微控制器芯片F280039CPZRQ1、F280039CSPM、F280039CSPN规格参数
- Word中如何将英文翻译成中文?简单的方法介绍
- YJAutoLayout
- 汇川MD380变频器系列,各种型号,原理图,pcb,BOM等
- 华为时习知,让企业培训更简单!
热门文章
- 全国各地电台FM.ini汇总
- 从招式与内功谈起——设计模式概述(三)
- [POI2009]Lyz
- SSM整合APP项目
- Semantic Proximity Search on Heterogeneous Graph by Proximity Embedding
- mysql3306端口被占用无法终止_Mysql3306端口被占用无法启动解决办法.doc
- 支付系统 java_PaySystem
- 时尚html输入框,12款经典时尚的HTML5应用
- 用计算机0和1表达难舍之情,表达不舍之情的说说
- vue+netty+redis微信猜数对战小游戏