值传递是对基本型变量而言的,传递的是该变量的一个副本,改变副本不影响原变量。

引用传递一般是对于对象型变量而言的,传递的是该对象地址的一个副本, 并不是原对象本身 。

一般认为,Java 内的传递都是值传递.,Java 中实例对象的传递是引用传递,Java 是值传递的

 

Java-值传递

这是一个很经典的例子,我们希望在调用了 swap() 方法之后交换 arg1 和 arg2 的值,但事实上并没有,为什么会这样?

这就是因为 Java 是值传递的,也就是说,我们在调用一个需要传递参数的函数时,传递给函数的参数并不是我们传递进去的参数本身,而是它的一个副本,我们改变了数据其实只是改变了副本的数据而已,并不会对原来的参数有任何的改变。

 

Java-值传递

 

我们自己定义了一个内部类 Person ,该类只有一个 int 类型的 age 属性,然后有 getter/setter ,我们希望通过 changeAge() 函数来改变 Person 对象的 age 属性,为什么这次成功了呢?

你依然可以理解为,主函数将 person 复制了一份到 changeAge 函数中去,最终还是只改变了 changeAge 中复制的那一份参数的值,而原本的参数并没有改变,但 changeAge 中的那一份和原本的参数指向了同一个内存区域!

相关文章:

  • 2021-11-23
  • 2021-10-29
  • 2021-08-08
  • 2021-11-10
  • 2021-06-29
猜你喜欢
  • 2021-07-04
  • 2021-09-13
  • 2021-05-25
  • 2021-08-22
相关资源
相似解决方案