java 中局部变量在栈内存中的复制

方法栈空间的变量所指向的值会被复制一份到栈空间。

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

上一篇:数据类型3.4深浅拷贝


下一篇:java8 Consumer的使用