java到底是值传递还是引用传递
2018-05-23 本文已影响0人
木木_bfe8
以下内容仅供自己学习,均参考网络。
![](https://img.haomeiwen.com/i11958918/a68093b8c22b90dd.png)
上面这段代码好像让人觉得用final修饰之后,就不能在方法中更改变量i的值了。殊不知,方法changeValue和main方法中的变量i根本就不是一个变量,因为java参数传递采用的是值传递,对于基本类型的变量,相当于直接将变量进行了拷贝。所以即使没有final修饰的情况下,在方法内部改变了变量i的值也不会影响方法外的i。
![](https://img.haomeiwen.com/i11958918/02a4a31858379d6e.png)
![](https://img.haomeiwen.com/i11958918/2cf637816c27e2c5.png)
原因在于java采用的是值传递,对于引用变量,传递的是引用的值,也就是说让实参和形参同时指向了同一个对象,因此让形参重新指向另一个对象对实参并没有任何影响。