值传递与引用传递
java中的值传递与引用传递
结论: java 中只存在值传递,不存在引用传递。
值传递与引用传递的区别
值传递的定义:在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。
引用传递的定义: 在调用函数时将实际参数的地址直接传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数。
1. java基本数据类型传递
如图所示: 变量a 传到 transfer方法中,并给a重新赋值。此时,并不会影响main 方法中的存的a 的值。
2 java引用类型的传递
2.1 java引用数据类型传递
如上图所示:changeName方法中改了person 的姓名,main方法中person 的姓名也改变了。此时很多同学会认为这是java的引用传递,其实不然,且听我后续娓娓道来。
2.2 java引用数据类型传递
如果所示: changeName方法中修改了person指向的堆内存地址,但是main方法中 person指向的堆内存地址没有变。(因为main方法中的person.getName() =“zhangsan”)
PS: java中引用类型的传递出现上面的原因先思考一下。
总结
java中只有值传递,没有引用传递。若存在引用传递,那么2.2中main方法中的person.getName==“lisi”.