Java中值传递和引用传递

以下是我个人的一点看法,有不对的欢迎各位指出来。

在Java中,值传递,是创建一个副本,副本中拷贝了这个变量的值,在调用函数中改变的是这个副本的值,与原变量的数值无关。

引用传递,是创建一个副本,副本中拷贝了这个对象的地址,在调用函数中改变的是该副本所指向的地址。

 

基本类型变量传递:

输出结果:

 

 可以看到,num变量在传递进foo函数后,num的值已经传递进来了,但是foo函数修改了这个值,原变量却没有改变。

为什么呢?

如果是同一个变量,修改了一个的值另一个也会发生变化。所以foo()中的num和main()中的num不是同一个变量,只是它们的值都一样,foo()中把原变量的值拷贝了一份,在函数中修改的是拷贝后的副本,所以原变量的值没有发生改变。

 

对象的传递:

同上,在函数中创建了一个副本保存该地址,如果是String类型的传入,原变量String a1 = "123" , 把a1进行传递,

 

 函数中    a1 =  new String("aaa");  改变的只是a1副本的指向,对原变量没有影响。

posted @ 2019-12-29 18:03  linyaoguo  阅读(257)  评论(0编辑  收藏  举报