java到底是值传递,还是引用传递?以前国内的java开发者有过很多争论,由于《Practical java》等书籍的引入,现在大家都知道java是严格的值传递,基本数据类型不会有什么问题,但是针对对象和数组,执行的结果,似乎应该是引用传递。
在《Practical java》中,给出了说明,针对对象和数组,事实上,传递的内容,是引用的值,而不是引用本身。但是怎么验证,网上没有例子,书上也没有给,现在给出一个 例子,可以很好的说明,java确实是值传递。例子如下:
打印的结果是
- D:/ > java Test
- m1---m2
- 1----2
D:/>java Test
m1---m2
1----2
这是因为,m1和m2本身是对象的引用没错,但是传入方法c的参数,实际上是m1和m2的副本,因此只是两个副本进行了交换,而m1和m2本身并没有被交 换。交换数组的方法cd,原理与之相同。