黑马程序员技术交流社区

标题: java中的参数传递问题, [打印本页]

作者: chenxianzai    时间: 2015-11-20 19:15
标题: java中的参数传递问题,
三句话 (如下)
         基本类型:形式参数的改变 不影响实际参数       
         引用类型:形式参数的改变 直接影响实际参数          
         String是个特殊的引用类型)
我可以用两句覆盖面更广一点的方式描述出来(如下):
  不管是基本类型还是引用类型: 形式参数做赋值操作的时候,实际参数不发生改变

        (当被调用的方法开始执行的时候,就从方法区里面把方法拿到了栈内存中,
        形式参数变量也根据传递过去的值进行初始化,当方法用完了,
        那么该方法在占内存中的变量也消失了。在所以也就是只在栈内存中对方法里面变量进行了改变,
        是不影响实际参数的。而加减乘除、赋值[就算是引用类型之间的赋值,是不是也只是在占内存中把地址值进行的赋值啊?]
        这一系列的操作都是在占内存中对方法里面变量进行了改变)
                               
                                如果在方法里面是改变形式参数内部的一些东西的时候 那么实际参数发生改变

        (对于引用类型,它随着参数传递到方法里面去的是地址值,指向的是堆中的对象,
        如果在方法里面通过这个地址值改变对象内部的一些属性,即使方法用完了,方法里面的变量的地址值的指向也消失了,
        但是对象内部的一些属性还是已经改变了,这些属性不会消失[因为在堆内存中],所以实际参数还是会改变。
        如果是基本类型,根本在堆内存中没有指向,基本类型都在栈内存或者常量池[值更不能被改变]中,
        所以基本类型形式参数的改变无论如何是改变不了实际参数的)



作者: 一江夜雨    时间: 2015-11-20 22:55
过来学习一下  这个一直是我的迷茫区域




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2