Scala实践2
一、Scala基本类型和操作
1.1 基本类型
Scala的基本类型与Java基本类型相同,都是byte、short、int、long、char、string、float、double、boolean。在Scala其只有string归于Java.lang包。其他的都是包Scala的成员。如,int的全名为Scala.Int。然而,由于包Scala和java.lang的所有成员都被每个Scala源文件自动应用,故可以在任何地方直接写作简化名。(如:Boolean、char等)
1.2 字面量
多数字面量的语法都与Java完全一致,唯一需要关注的两个差异分别是Scala的原字字符串和符号字面量。
- 字符字面量
字符字面量可以是在单引号之间的任何Unicode字符,如:

单引号除了可以摆放字符之外,还可以提供一个前缀反斜杠的八进制和十六进制的表示字符编码号的数字。
八进制必须在'\0'和'\377'之间,十六进制的是以前缀\u的四位十六进制的数字的通用Unicode字符方式给出。例如:

还有一些字符字面量被表示成特殊的的转义序列,如下图

例如:
- 字符串字面量、
字符串字面量是由双引号(“)包括的字符组成:

由于这种语法对于大量转义序列或跨行若干的字符串很笨拙。因此,Scala为原始字符串引入了一种特殊的语法。即以同一行里的三个引号(""")作为开始和结束。内部的原始字符串可以包含无论何种任意字符,包括新行、引号和特殊字符,当然同一行的三个引号(""")除外。如下:

由于第二行前导的空格被包含在字符串里面。为了解决这个问题,字符串类引入了stripMargin方法。使用方式是,把管道符号(|)放在每行的前面,然后对整个字符串调用sripMargin,如下图:

- 符号字面量
符号字面量被写成'<标识符>
1.3 操作符和方法
- Scala为基本类型提供了丰富的操作符集。这些操作符实际上只是普通方法调用的另一种表现形式。例如,1+1与(1).+(1)其实是一回事。

- 事实上,Int包含了+的各种类型参数的重载方法。例如,另一个+方法的参数和返回类型都是Long。如果把Long加到Int上,就将转而调用这个+方法:

- Scala里的操作符不是特殊语法,任何方法都可以是操作符。到底是方法还是操作符取决于你如何使用
1.4 数字运算
任何数类型都可以使用中缀操作符,+、-、*、/、%做数字计算,其中%符号得到的浮点数余数部分不遵循IEEE754标准(计算余数时使用四舍五入的除法,而不是去尾除法)的定义。

1.5 关系和逻辑操作
- 关系方法包括:> 、 <、>= 和<=,可以用来比较类型并产生Boolean结果。还可以用一元操作符!改变Boolean值。

- 逻辑方法、逻辑与(&&)和逻辑或(||),以中缀方式调用Boolean操作数并产生Boolean结果。如

1.6 位操作符
- Scala包含了可以对整数类型的单个位执行操作 的若干操作方法,有按位与运算(&)、按位或运算(|)、按位异或运算(^)。一元按位取补操作符(~,方法unary_~)反转它的操作数的每一位。例如:

- Scala整数类型还提供了三个位移方法,分别是左移(<<)、右移(>>)和无符号右移(>>>)
1.7对象相等性
如果想要比较一下看看两个对象是否相等,可以用==或者它的反义!=。==对所有对象都起作用,不仅是基本类型,还可以比较列表,还能进一步比较不同类型的两个对象,甚至可以比较null或者任何可能是null的东西,不会有任何异常抛出。

1.8操作符的优先级和关联性

在上表以降序方式列举了以方法第一个字段判定的优先级,同一行的字符具有同样的优先级。表中的字符位置越高,以这个字符开始的方法具有的优先级就越高,举例如下:

除了上面提到的优先级规则外,还有以等号结束的赋值操作符。如果操作符以等号字符(=)结束,且操作符并非比较 操作符<=,>=,==或=,那么这个操作符的优先级与赋值符(=)相同。也就是说,它比其他操作符的优先级都低。
Scala实践2的更多相关文章
- Scala实践14
1.Scala的future 创建future import scala.concurrent._ import ExecutionContext.Implicits.global object Fu ...
- Scala实践13
1.隐式参数 方法可以具有隐式参数列表,由参数列表开头的implicit关键字标记.如果该参数列表中的参数没有像往常一样传递,Scala将查看它是否可以获得正确类型的隐式值,如果可以,则自动传递. S ...
- Scala实践12
1.内部类和抽象类型成员作为对象成员 内部类 在Scala中,可以让类将其他类作为成员.这些内部类是封闭类的成员.在Scala中,这样的内部类绑定到外部对象.假设希望编译器在编译时阻止我们混合哪些节点 ...
- Scala实践11
1.1泛型类 泛型类是将类型作为参数的类.它们对集合类特别有用. 定义泛类型:泛型类将类型作为方括号内的参数[].一种惯例是使用字母A作为类型参数标识符,但是可以使用任何参数名称. class Sta ...
- Scala实践10
1.模式匹配 模式匹配是一种根据模式检查值的机制.它是switch(Java中语句)的更强大版本,它同样可以用来代替一系列if / else语句. 句法 匹配表达式具有值,match关键字和至少一个c ...
- Scala实践9
1.特征 Traits用于在类之间共享接口和字段.它们类似于Java 8的接口.类和对象可以扩展特征,但是特征不能被实例化,因此没有参数. 定义一个特征 最小特征只是关键字trait和标识符: tra ...
- Scala实践6
1 if表达式 Scala中if...else..表达式是有返回值的,如果if和else返回值类型不一样,则返回Any类型. scala> val a3=10 a3: Int = 10 sca ...
- Scala实践8
1.1继承类 使用extends关键字,在定义中给出子类需要而超类没有的字段和方法,或者重写超类的方法. class Person { var name = "zhangsan" ...
- Scala实践7
一.类 1.1简单类和无参方法 类的定义通过class关键字实现 scala> class Dog { | private var leg = 4 | def shout(content: St ...
- Scala实践5
一.Scala的层级 1.1类层级 Scala中,Any是所其他类的超类,在底端定义了一些有趣的类NULL和Nothing,是所有其他类的子类. 根类Any有两个子类:AnyVal和AnyRef.其中 ...
随机推荐
- C# 16 进制字符串转 int
最近在写硬件,发现有一些测试是做 16 进制的字符串,需要把他转换为整形才可以处理. 本文告诉大家如何从 16 进制转整形 如果输入的是 0xaa 这时转换 int 不能使用 Parse 不然会出现异 ...
- H3C 显示OSPF邻居信息
- java List接口
Collection子接口: List是有序的集合,集合中每个元素都有对应的顺序序列.List集合可使用重复元素,可以通过索引来访问指定位置的集合元素(顺序索引从0开始),List集合默认按元素的添加 ...
- linux模块参数
驱动需要知道的几个参数因不同的系统而不同. 从使用的设备号( 如我们在下一章见到的 ) 到驱动应当任何操作的几个方面. 例如, SCSI 适配器的驱动常常有选项控制标记命令队列 的使用, IDE 驱动 ...
- H3C DHCP简介
- javaScript通过URL获取参数
// 函数方法 function GetQueryString(name) { var reg = new RegExp("(^|&)" + name + "=( ...
- 2019-3-1-C#-double-好用的扩展
title author date CreateTime categories C# double 好用的扩展 lindexi 2019-3-1 9:19:5 +0800 2018-05-15 10: ...
- Java逻辑思维训练题
两柱香问题题目:有两柱不均匀的香,每柱香燃烧完需要1个小时,问:怎样用两柱香切出一个15分钟的时间段?这个题的重点就是怎么切. 答案:将甲香的一头点着,将乙香的两头点着,当乙香燃烧完时,说明已经过了半 ...
- STM32 命名方法
1.STM32型号的说明:以STM32F103RBT6这个型号的芯片为例,该型号的组成为7个部分,其命名规则如下: STM32 ST公司生产的Cortex-M内核的32位微控制器 F F代表产品类型 ...
- 33.python之操作系统,进程,线程
转载:https://www.cnblogs.com/yuanchenqi/articles/6248025.html 操作系统 一 为什么要有操作系统? 现代计算机系统是由一个或者多个处理器,主存, ...