文章目录
3.变量
3.1 基本概念
变量相当于内存中一个数据存储空间的表示,你可以把变量看做是一个房间的门牌号,通过门牌号我们可以找到房间,而通过变量名可以访问到变量(值)
变量的初始化(自动类型推断)scala要求变量声明时初始化
var age = 12
var name = "cris"
var flg = true
var key = 'a'
// 如果不使用 Scala 的自动类型推断
val b: Double = 11.11
var a: String = "simida"
变量使用详解
var | val 变量名 [: 变量类型] = 变量值,说明:在scala中声明一个变量时,可以不指定类型,编译器根据值确定
声明变量时,类型可以省略(编译器自动推导,即类型推导)
类型确定后,就不能修改,说明Scala 是强数据类型语言
在声明/定义一个变量时,可以使用var 或者 val 来修饰, var 修饰的变量可改变(值和引用),val 修饰的变量不可改(引用)
val修饰的变量在编译后,等同于加上final通过反编译看底层代码就知道了
var 修饰的对象引用可以改变,val 修饰的则不可改变,但对象的状态(值)却是可以改变的。(比如: 自定义对象、数组、集合等等)
变量声明时,需要初始值
object Main {
def main(args: Array[String]): Unit = {
var stu = new Stu
val stu2 = new Stu
// var 修改的变量指向的对象的值和引用均可改变
stu.name = "james"
stu = null
// val 修饰的变量指向的对象的值可以改变,但是引用无法改变
stu2.name = "simida"
// stu2 = null // 报错
}
}
class Stu {
// 属性默认就是 public 权限
var name = "cris"
}
能使用 val 就别使用 var !
因为改变变量引用指向的的工作量大大高于改变对象值的工作量,使用 val 关键字,底层编译器也会对其进行优化,效率更高!
3.2 数据类型
Scala 与 Java有着相同的数据类型,在Scal