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.其中 ...
随机推荐
- poj 3295
题目意思就是计算表达式的值,如果所有情况下表达式为真就输出“tautology”,否则输出“not”. p, q, r, s, and t,每个人有两种情况,综合起来一共有32种情况,枚举所有情况最后 ...
- python基础九之函数
1,函数的定义 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段.函数分为自定义函数和内置函数,内置函数就是python内部自带的一些函数,如:print().int()等.自定义函数 ...
- 基于AutoIt3的运维工具
#Region ;**** 编译指令由 AutoIt3Wrapper 选项编译窗口创建 **** #AutoIt3Wrapper_Icon=favicon.ico #AutoIt3Wrapper_Co ...
- Codeforces Round #564(div2)
Codeforces Round #564(div2) 本来以为是送分场,结果成了送命场. 菜是原罪 A SB题,上来读不懂题就交WA了一发,代码就不粘了 B 简单构造 很明显,\(n*n\)的矩阵可 ...
- linux seqlock 锁
内核包含了一对新机制打算来提供快速地, 无锁地存取一个共享资源. seqlock 在这 种情况下工作, 要保护的资源小, 简单, 并且常常被存取, 并且很少写存取但是必须要快. 基本上, 它们通过允许 ...
- java位运算和无符号运算
计算机在底层使用的是二进制补码进行运算. 计算规则: 正数的原码.反码.补码是其二进制本身. 负数的原码首先计算其二进制数,然后最高位使用1表示负数,反码是最高位不变其它位取反,补码是在反码的基础上进 ...
- js 对象的深拷贝
function deepCopy(obj) { var result = Array.isArray(obj) ? [] : {}; for (var key in obj) { if (obj.h ...
- SpringBoot使用Junit测试 防止事物自动回滚
问题:我在测试类中的save方法测试成功通过,但数据库没有插入数据 测试方法如下: @Test @Transactional // @Rollback(false) public voi ...
- Scala中 下划线的用处
From: http://congli.iteye.com/blog/2169401 1.作为“通配符”,类似Java中的*.如import scala.math._ 2.:_*作为一个整体,告诉 ...
- poj1080 - Human Gene Functions (dp)
题面 It is well known that a human gene can be considered as a sequence, consisting of four nucleotide ...