产生此现象的原因是因为传入函数的值是分值(基本)类型和引用类型的。
值类型传递进函数的是一个值的拷贝(副本),改变副本的值并不改变其本身。
而引用类型传递进参数的是一个地址,这个地址中存储的就是该参数的值,将此地址的值更改之后,原来的值必然也受影响。
想知道哪些可以被改变,哪些不能被改变,就要分清楚该类型是值类型还是引用类型。
对象也是属于引用类型的。下图是一些常见的归类。
一个小tips:一般需要进行new操作的都是引用类型。
感谢回答。但是还有疑问。为什么我用String或Integer测试,仍然是值类型的结果?
@一对萝卜: string是一种极其特殊的引用类型,其会在某些情况下展示出值类型的特性。这就不是三言两语说得清的了,推荐你看一篇博客,虽然是以C#为例的,但是大多情况下java和c#并无区别。
https://www.cnblogs.com/yank/archive/2011/10/24/2204145.html
number 是在主方法中定义,没有传进去,你把int number 改成 number 就可以变了