【大纲】
【正文】
1.数据类型
1.1.【结论】作用
scala是强类型语言,用数据类型来约束变量的取值范围
1.2.【结论】分类
家族首尾的数据类型 | 使用示例 | 说明 |
---|---|---|
Any | – | scala中所有数据类型的最高父,它有两个子类AnyRef与AnyVal |
Nothing | – | scala中所有数据类型的子。不能直接创建该类型的实例,但当某个方法抛异常时,返回的就是Nothing类型 |
值类型的数据类型 | 使用示例 | 说明 |
---|---|---|
AnyVal | – | scala所有值类型的父 |
Unit(只有一个值()) | val a = () | 返回值类型是空,等于把java的void包装成了Unit类型 |
Byte | val a: Byte = 1 | 8位带符号整数 [-129 ~ 127] |
Short | val a: Short = 1 | 16位带符号整数 [-32768 ~ 32767] |
Int(默认、默认值0) | val a = 1 ;val b = 0x29 # 41 | 32位带符号整数 [-2147483648 ~ 2147483647] |
Long | val a = 1L # 1 | 64位带符号整数 [-9223372036854775808 ~ 9223372036854775807] |
Float | val a = 1F # 1.0 | 32位单精度浮点数 |
Double(默认、默认值0.0) | val a = 1.0 | 64位双精度浮点数 |
Boolean(默认值false) | val a = true | true/false |
Char | val a = ‘s’ | 16位无符号Unicode字符 |
引用类型的数据类型 | 使用示例 | 说明 |
---|---|---|
AnyRef (地位同java.lang.Object) | scala所有引用类型的父 | |
Null(只有一个值null) | val val_null = null | scala所有引用类型的子类, 等于java的null。能赋值给任何引用类型变量 |
java.lang.String(默认值null) | val s = “hello” | Char类型的序列 = 字符串 |
其他java类 | – | |
ScalaObject | – | |
Nil (只有一个值List()) | val list = Nil | scala的空List |
其他scala类 | – |
# 注意:
0.scala中所有的类型都使用大写字母开头
1.scala中整形使用Int而不是java的Integer
2.注意null不能赋值给值类型变量,因为null不是值类型的子
2.类型转换
2.1.【结论】值类型数据的类型转换
自动类型转换:范围小的数据类型值会自动转换为范围大的数据类型值
Byte/Short/Char < Int < Long < Float < Double
强制类型转换:范围大的数据类型值通过强制转换函数,转换为范围小的数据类型值,可能损失精度
val/var 变量名: 数据类型 = 具体的值.toXxx # Xxx表示目标数据类型
示例
# 值类型的自动类型转换
scala> var a:Int = 1
a: Int = 1
scala> val b:Double = 1 + 1.2 # 效果:Int类型的1会自动转换为Double,来和Double计算
b: Double = 2.2
# 值类型的强制类型转换
scala> val a:Double = 1.23
a: Double = 1.23
scala> val b:Int = a.toInt # 效果:调用强制类型转换函数,进行强制类型转换了
b: Int = 1
2.2.【结论】值类型数据和String相互转换
值类型数据转String
方式一
值类型数据 + ""
方式二
值类型数据.toString
String转值类型数据
字符串值.toInt
字符串值.toBoolean
字符串值.toCharArray
# 注意:String转Char 是字符串值.toCharArray,而不是字符串值.toChar
示例
# Int转String
scala> val a = 10
a: Int = 10
scala> val b = a.toString
b: String = 10
# Int转String
scala> val a = 10
a: Int = 10
scala> val b = a + ""
b: String = 10