三句话 (如下)
基本类型:形式参数的改变 不影响实际参数
引用类型:形式参数的改变 直接影响实际参数
String是个特殊的引用类型)
我可以用两句覆盖面更广一点的方式描述出来(如下):
不管是基本类型还是引用类型: 形式参数做赋值操作的时候,实际参数不发生改变
(当被调用的方法开始执行的时候,就从方法区里面把方法拿到了栈内存中,
形式参数变量也根据传递过去的值进行初始化,当方法用完了,
那么该方法在占内存中的变量也消失了。在所以也就是只在栈内存中对方法里面变量进行了改变,
是不影响实际参数的。而加减乘除、赋值[就算是引用类型之间的赋值,是不是也只是在占内存中把地址值进行的赋值啊?]
这一系列的操作都是在占内存中对方法里面变量进行了改变)
如果在方法里面是改变形式参数内部的一些东西的时候 那么实际参数发生改变
(对于引用类型,它随着参数传递到方法里面去的是地址值,指向的是堆中的对象,
如果在方法里面通过这个地址值改变对象内部的一些属性,即使方法用完了,方法里面的变量的地址值的指向也消失了,
但是对象内部的一些属性还是已经改变了,这些属性不会消失[因为在堆内存中],所以实际参数还是会改变。
如果是基本类型,根本在堆内存中没有指向,基本类型都在栈内存或者常量池[值更不能被改变]中,
所以基本类型形式参数的改变无论如何是改变不了实际参数的)
|
|