Java方法返回值还是引用

Posted by AlstonWilliams on February 17, 2019

一般来说,在学习Java时,都会有人向我们强调Java方法的参数是传值还是传引用.但是对于Java方法的返回值,是返回引用,还是返回值,却没有人说.

其实Java方法的返回值,跟参数的传递一样,都是基本类型返回值,而非基本类型,则返回引用.

测试的代码已经放到如下Gist中了:https://gist.github.com/AlstonWilliams/a1fa5f453ad4a0137365aacf597f31d3

认识到这一点很重要.假如说我们让一个方法返回了一个ArrayList,本来打算让其他线程只是并发的访问这个ArrayList,但是由于设计原因等,可能不小心造成有的线程会修改这个ArrayList,这样就可能会因为各个线程看到的数据不一致,而造成一些问题.

以前写代码没有意识到这个问题.现在要重新审查当前的代码中,是否有这个问题了.