经常听别人说java传的都是值,但是又会经常碰到传对象进去方法,方法中修改对象,方法外的对象也会改,经过了解发现java所有对象传的都是值,不过这个值是原来堆中对象的一份引用的拷贝,当然有几种特殊情况
1.传char int 这类基础类型
由于基础类型是直接在栈里,不存在引用情况,所以当参数是基础类型的时候会复制一份新的值传过去,这时再怎么改变都跟原来的值无关了
2.传的是integer,string这类的常用引用类型
string integer这类对象我们的经常用的 但是这类数据是final不能修改的,而且会在堆和常量池中保存,因为传的是值引用的一份拷贝,让方法内用拷贝的引用去改变string时,由于final导致拷贝的引用会指向新的值,但是原来的引用指向的值是没变的,所以会出现这种情况,特别强调下,如果传的StringBuffer类的值也是会随着方法内的改变而改变的,因为它是可以追加操作的