1、基本说明
- Scala中一切数据都是对象,都是
Any
的子类 - Scala中数据类型分为两大类:数值类型(
AnyVal
)、引用类型(AnyRef
),不管是数值类型还是引用类型都是对象 - Scala数据类型仍然遵守,低精度数值类型像高精度数值类型自动转换(隐式转换)
- Scala中的
StringOps
是对Java中的String
增强 Unit
:对应Java中的void
,用于方法的返回值,表示该方法不存在返回值。Unit
也是一个数据类型,他只有一个对象就是()
.Void
不是数据类型,仅仅是一个关键字- Scala中
Null
也是一个类型,只有一个对象,就是null
。它是所有引用类型(AnyRef
)的子类 Nothing
是所有数据类型的子类,主要用在一个函数没有明确返回值时使用,因为这样我们可以把抛出的返回值,返回给任何的变量或者函数
2、整数类型
Scala的整数类型就是用于存放整数值的,比如:12、30等
数据类型 | 描述 |
---|---|
Byte | 1个字节,8位有符号补码整数。数值区间为 -128 到 127 |
Short | 2个字节,16位有符号补码整数。整数区间为 32768 到 32767 |
Int | 4个字节,32位有符号补码整数。数值区间为 -2147483648 到 2147483647 |
Long | 8个字节,64位有符号补码整数。数值区间为 -2 ^ (64 - 1) 到 2 ^ (64 - 1) - 1 |
3、字符类型
Char,字符类型可以表示单个字符
说明:
- 字符常量是用单引号引起来的单个字符
\t
:制表符\n
:换行符\\
:表示反斜杠\
\"
:表示单个双引号"
4、Unit、Null、Nothing
数据类型 | 描述 |
---|---|
Unit | 表示无值,同Java语言中的void,方法无返回值是使用。Unit是一个对象,仅存在一个实例,为() |
Null | Null是一个对象,仅存在一个实例null |
Nothing | Nothing类型在Scala语言中是所有类的子类。当一个函数,我们确定没有正常的返回值(通常这是为异常),可以用Nothing来指定返回类型,这样有一个好处,就是我们可以把返回值(异常)赋给其他的函数或者变量(兼容性) |
5、类型转换
5.1、自动类型转换规则
自动类型转换:当Scala程序在进行赋值或者运算时,精度小的类型自动转换为精度大的数值类型。
基本原则:
- 自动提升原则:有多种类型的数据混合运算时,系统首先自动将所有数据转换为精度大的那种数据类型,然后再进行计算
- 把精度大的数值类型复制给精度小的数值类型时,会出现异常,反之,就会进行自动类型转换
- (
byte
,short
)和char
之间无法相互类型转换
4.byte
、short
、char
三者混合计算时,首先会将数据类型转换为int
型
5.2、强制类型转换
- 自动类型转换的逆过程,将精度大的数值类型转换为精度小的数值类型。使用时要加上强制转换函数,但可能造成精度降低或溢出。
- 强转只针对最近的操作数有效