方法栈空间的变量所指向的值会被复制一份到栈空间。
case class Person(name: String) class MyClass { var field: Person = Person("lisi") def p1(): Unit = { val field_ = field println(field_) changeField() println(field_) } def p2(): Unit = { println(field) changeField() println(field) } def changeField(): Unit = { this.field = Person("wu") } } object Test { /** * 单独运行 p1,输出: * Person(lisi) * Person(lisi) * * 单独运行 p2,输出 * Person(lisi) * Person(wu) */ def main(args: Array[String]): Unit = { val myClass = new MyClass() // myClass.p1() myClass.p2() } }
233