Scala核心编程_第02章_变量
变量声明基本语法
var | val 变量名 [: 变量类型] = 变量值
注意事项:
- 声明变量时,类型可以省略(编译器自动推导,即类型推导)
- 类型确定后,就不能修改,说明Scala 是强数据类型语言.
- 在声明/定义一个变量时,可以使用var 或者 val 来修饰, var 修饰的变量可改变,val 修饰的变量不可改.val修饰的变量在编译后,等同于加上final,通过反编译看下底层代码。var 修饰的对象引用可以改变,val 修饰的则不可改变,但对象的状态(值)却是可以改变的(比如: 自定义对象、数组、集合等等)
- 变量声明时,需要初始值。而java可以不给出初始值,系统自动赋予默认值
scala设计者为什么设计 var和val?
- 当需求是获取/创建一个对象后,只是读取或者修该对象的属性值,但是我们很少去改变这个对象本身这时,我们就可以使用val
- 因为val 没有线程安全问题,因此效率高。
object Vdemo { def main(args: Array[String]): Unit = { val dog= new Dog() dog.age=5 dog.gender="male" //报错 } class Dog{ val gender="female" var age=5 } }
scala数据类型介绍
- Scala 与 Java有着相同的数据类型,在Scala中数据类型都是对象,也就是说scala没有java中的原生类型,scala这个地方和python很像,"一切皆对象"。
- Scala数据类型分为两大类 AnyVal(值类型) 和 AnyRef(引用类型), 注意:不管是AnyVal还是AnyRef 都是对象。
- 在scala中有一个根类型Any,他是所有类的父类。
- scala中一切皆为对象,分为两大类AnyVal值类型),AnyRcf(引用类型),他们都是Any子类
- Null 类型是scala的特别类型,它只有一个值null,他是bottomcalss,是所有AnyRef类型的子类
- Nothing类型也是bottomclass,他是所有类的子类,在开发中通常可以将Nothing类型的值返回给任意变量或者函数,这里抛出异常使用很多。