02 Scala 变量的基本介绍
变量
1. 变量使用说明
-
scala
要求变量声明时初始化。 - 声明变量时,类型可以省略(编译器会自动进行类型推导)。
- 类型确定后,就不可以再修改了(
Scala
是强数据类型语言)。 - 在声明/定义一个变量时,可以使用
var
或者val
来修饰,var
修饰的变量可改变,val
修饰的变量不可改。 -
val
没有线程安全问题,因此效率高,推荐使用。 -
val
修饰的变量在编译后,等同于加上了final
。 -
var
修饰的对象引用可以改变,val
修饰的则不可改变,但对象的状态(值)是可以改变的。
2. 数据类型
-
Scala
与Java
有着相同的数据类型,但是在Scala
中数据类型都是对象。 -
Scala
数据类型分为两大类AnyVal(值类型)
和AnyRef(引用类型)
。 -
Scala
数据类型体系图。- 在
Scala
中有一个根类型Any
,是所有类的父类。 -
Null
类型是scala
的特别类型,它只有一个值null
, 是所有AnyRef
类型的子类。 -
Nothing
类型是所有类的子类。 - 在
Scala
中依然遵守:低精度的值,向高精度的值自动转换,即隐式转换。
- 在
-
可以直接给
Char
赋一个整数,进行输出时,会按照对应的unicode
字符输出。 -
Char
类型可以进行运算,相当于一个整数。 -
Unit
类型表示无值,相当于void
。Unit
只有一个实例值,为()
。
3. 值类型隐式转换
-
byte,short,char
他们三者可以计算,在计算时首先转换为int
类型。 - 自动提升原则:表达式结果的类型自动提升为操作数中最大的类型。
-
Char
类型可以保存Int
的常量值,但不能保存Int
的变量值,需要强转。 -
Byte
和Short
类型在进行运算时,当做Int
类型处理。
4. 值类型与 String 类型的转换
4.1 基本类型转 String 类型
- 将基本类型的值
+ ""
即可 。
4.2 String 类型转基本类型
- 通过
str.toXxx
方法即可。 - 注意:
"12.5".toInt
会抛出异常,而不会进行截取。