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.其中 ...
随机推荐
- codedecision P1112 区间连续段 题解 线段树
题目描述:https://www.cnblogs.com/problems/p/P1112.html 题目链接:http://codedecision.com/problem/1112 线段树区间操作 ...
- Python--day22--面向对象的交互
Python里面自带的类和对象: 类名的作用: 类里面的与属性相关的对象self的运用: 实例化:就是创建一个对象 调用方法,类名.方法名(对象名) 执行步骤: 简写:alex.walk()等价于Pe ...
- ERROR 1366 (HY000): Incorrect string value: '\xD5\xC5\xC8\xFD' for column 'name' at row 1
ERROR 1366 (HY000): Incorrect string value: '\xD5\xC5\xC8\xFD' for column 'name' at row 1 数据库字符集问 ...
- 4-2 setting中一定要将ROBOTSTXT_OBEY = False的注释去掉
# Obey robots.txt rules##默认遵循robots协议的,默认去读取每个网站上的robots协议ROBOTSTXT_OBEY = False
- 关于Android studio Haxm加速器安装
首先,在SDK manager中要安装如下选项 安装后,在启动虚拟机时如果提示你没有Install Haxm,在目录sdk\extras\intel\Hardware_Accelerated_Exec ...
- 用生活例子来形象了解TCP-IP协议
TCP/IP模型四层协议 与 邮件? 1.应用层——与用户直接打交道 类似 要寄的物件 2.传输层——处理和增加源数据并传输到IP层 类似 快递单信息 3.IP层——分配地址和传送数据 类似 分拣站分 ...
- P1086 最大素数积
题目描述 我们称一个整数 \(x\) 是"素数积"当且仅当 \(x = a \times b\) 并且 \(a\) 和 \(b\) 都是素数. 现在告诉你一个数 \(N(1 \le ...
- Linux 内核 NuBus 总线
另一个有趣的, 但是几乎被忘记的, 接口总线是 NuBus. 它被发现于老的 Mac 计算机(那 些有 M68K CPU 家族的). 所有的这个总线是内存映射的(象 M68K 的所有东西), 并且设备 ...
- C\C++串口通信编程的一点技术记录
新工作接的第一个活,要写一个配合设备调试的上位机程序. 除了MFC界面的部分,就是要处理几条命令. 串口通信部分代码借鉴的是这一篇文章:http://blog.sina.com.cn/s/blog_a ...
- linux 如何查找命令的路径(which搜索系统命令,whichis搜索文件)
http://hi.baidu.com/longredhao/item/911356ea2d8bed3687d9deed linux 下,我们常使用 cd ,grep,vi 等命令,有时候我们要查到这 ...