Discuss / Java / 关于引用参数绑定的两个例子的解释

关于引用参数绑定的两个例子的解释

Topic source

传入基本类型的变量相当于c中的传值调用,传入引用类型的变量相当于c中的传引用调用。

传入基本类型的变量本质上是把原变量的值拷贝了一份,在方法内部使用的是拷贝的那份值,因此方法内部怎么折腾也和外面的原变量无关。

而传入引用类型的变量本质上是把引用型变量里存的指向地址拷贝了一份(相当于拷贝了一个指针),例如后一个例子中的bob就是一个指向字符串“Bob”的指针,

p.setName(bob)就是把这个指针拷贝了一份,并赋给了this.name。此时bob指针和this.name指针均指向字符串“Bob”所在的内存,而之后的bob = “Alice”则使得bob指针指向了

新的内存(里面放着“Alice”),而this.name指针则还指着原先的“Bob”没有变,因此此时再次执行p.getName()返回this.name时得到的仍是“Bob”。

bob这个例子中修改的是引用型变量的指向,而不是引用型变量指向的内存里具体的内容,如果修改的是内存里具体的内容,则效果将与上面的“Homer”和“Bart”例子一样。


  • 1

Reply