变量定义

scala声明变量有两种方式, val和var

var 变量名 [: 变量类型] = 初始值
val 常量名 [: 常量类型] = 初始值
注意:能用常量的地方不用变量

val定义的值是不可变的,它不是一个常量,是不可变量,或称之为只读变量

注意:

  1. scala默认为匿名变量分配val
  2. val定义的变量虽然不能改变其引用的内存地址,但是可以改变其引用的对象的内部的其他属性值
  3. 为了减少可变性引起的bug,应该尽可能地使用不可变变量。变量类型可以省略,解析器会根据值进行推断。val和var声明变量时都必须初始化
  4. 变量声明时,必须要有初始值
  5. var 修饰的对象引用可以改变,val 修饰的对象则不可改变,但对象的状态(值) 却是可以改变的。(比如:自定义对象、数组、集合等等) ```scala //这边不能使用main方法, 写了也没用 class Student(var name: String, age: Int) { def printerInfo(): Unit = { println(this.name + “ “ + age + “ “ + Student.school) } }

//引入伴生对象, 互相都能访问对方成员, 这个对象主要是承担静态的作用 object Student { val school: String = “abc”

def main(args: Array[String]): Unit = { val jdxia = new Student(“jdxia”, 17) println(jdxia.name) } }

  1. <a name="val"></a>
  2. ## val
  3. 可以不声明类型,scala自动推断类型

val a = “123”;

  1. 也可以直接声明类型

val b: String = “123”;

  1. **注意: val声明的变量,声明好了之后,值是不可变的,相当于final修饰了,但是可以用val重新赋值**

scala> val k = “123” k: String = 123

scala> k = “234”

:12: error: reassignment to val k = “234” ^

scala> val k = “234” k: String = 234 ``` 推荐用val,方便垃圾回收

var

和val相比,var是可以重新赋值的

标识符的命名规范

Scala 对各种变量、方法、函数等命名时使用的字符序列称为标识符。即:凡是自己可 以起名字的地方都叫标识符。
1)命名规则
Scala 中的标识符声明,基本和 Java 是一致的,但是细节上会有所变化,有以下三种规 则:
(1)以字母或者下划线开头,后接字母、数字、下划线
(2)以操作符开头,且只包含操作符(+ - * / # !等)
(3)用反引号....包括的任意字符串,即使是 Scala 关键字(39 个)也可以
• package, import, class, object, trait, extends, with, type, for
• private, protected, abstract, sealed, final, implicit, lazy, override
• try, catch, finally, throw
• if, else, match, case, do, while, for, return, yield
• def, val, var
• this, super
• new
• true, false, null