基本类型和操作
1.基本类型
数值型 |
范围 |
Short
|
16 位有符号补码整数(-215~215-1 |
Int
|
32 位有符号补码整数(-231~231-1) |
Long
|
64 位有符号补码整数(-263~263-1) |
Char
|
16 位无符号Unicode字符(0~216-1) |
String
|
字符序列 |
Float
|
32 位 IEEE754 单精度浮点数 |
Double
|
64 位 IEEE754 单精度浮点数 |
Boolean
|
true 或 false |
Byte
|
8 位有符号补码整数(-27~27-1) |
除了String归于java.lang包之外,其余所有的基本类型都是包scala的成员。1如,Int的全名是scala.Int 。
PS:为了纪念这个社区推动的选择,将来 Scala 的版本可能不 ,再支持乃至移除小写变体,因此跟随社区的大流,在你的 Scala 代码中使用 Int 而非 int 才是明智之举。
2.文本
所有在表 5.1 里列出的基本类型都可以写成文本:literal。文本是直接在代码里写常量值的一种方式。
1)整数文本
类型 Int,Long,Short 和 Byte 的整数文本有三种格式:十进制,十六进制和八进制。 整数文本的开头方式说明了数字的基。如果数开始于 0x 或 0X,那它是十六进制(基于 16),并且可能包含从 0 到 9,及大写或小写的从 A 到 F 的数字。举例如下:
scala> val hex = 0x5
hex: Int = 5
scala> val hex2 = 0x00FF
hex2: Int = 255
scala> val magic = 0xcafebabe
magic: Int = -889275714
请注意,不论你用什么形式的整数文本初始化,Scala 的 shell 始终打印输出基于 10 的整数值。因此解释器会把你用文本 0x00FF 初始化的 hex2 变量的值显示为十进制的 255。
2)浮点数文本
浮点数文本是由十进制数字,可选的小数点和可选的 E 或 e 及指数部分组成的。下面是一些浮点数文本的例子:
scala> val bigger = 1.2345e1
bigger: Double = 12.345
scala> val biggerStill = 123E45
biggerStill: Double = 1.23E47
3)符号文本
符号文本被写成'<标识符>,这里<标识符>可以是任何字母或数字的标识符。这种文本被映射成预定义类 scala.Symbol 的实例。文本'cymbal 将被编译器扩展为工厂方法调用:Symbol("cymbal")。
scala> val s = 'aSymbol
s: Symbol = 'aSymbol
scala> s.name
res20: String = aSymbol
布尔类型有两个文本,true 和 false:
scala> val bool = true
bool: Boolean = true
scala> val fool = false
fool: Boolean = false
4)数学运算
你可以通过中缀操作符,加号(+),减号(-),乘号(*),除号(/)和余数(%),在任何数类型上调用数学方法。
你可以通过中缀操作符,加号(+),减号(-),乘号(*),除号(/)和余数(%),在任何数类型上调用数学方法。
5)关系和逻辑操作
你可以用关系方法:大于(>),小于(<),大于等于(>=)和小于等于(<=)比较数类型,像等号操作符那样,产生一个 Boolean 结果。另外,你可以使用一元操作符!(unary_!方法)改变 Boolean 值。
逻辑方法,逻辑与(&&)和逻辑或(||),以中缀方式带 Boolean 操作数并产生 Boolean结果。
6)位操作符
Scala让你能够使用若干位方法对整数类型的单个位执行操作。有:按位与运算(&),按位或运算(|)和按位异或运算(^)。5一元按位取补操作符(~,方法unary_~),反转它的操作数的每一位。 按位与运算(&),按位或运算(|)和按位异或运算(^)。5一元按位取补操作符(~,方法unary_~),反转它的操作数的每一位。
Scala让你能够使用若干位方法对整数类型的单个位执行操作。有:按位与运算(&),按位或运算(|)和按位异或运算(^)。5一元按位取补操作符(~,方法unary_~),反转它的操作数的每一位 。
7)对象相等性
如果你想比较一下看看两个对象是否相等,可以使用或者==,或它的反义!=。
8)操作符的优先级和关联性
操作符的优先级决定了表达式的哪个部分先于其他部分被评估。
你可以在 Scala 基本类型上调用的方法远多于前几段里面讲到过的。表格 5.4 里罗列了几个例子。这些方法的使用要通过隐式转换:implicit conversion,一种将在第二十一章描述其细节的技术。