A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© chenxianzai 中级黑马   /  2015-11-20 19:15  /  602 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

三句话 (如下)
         基本类型:形式参数的改变 不影响实际参数       
         引用类型:形式参数的改变 直接影响实际参数          
         String是个特殊的引用类型)
我可以用两句覆盖面更广一点的方式描述出来(如下):
  不管是基本类型还是引用类型: 形式参数做赋值操作的时候,实际参数不发生改变

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

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


1 个回复

倒序浏览
过来学习一下  这个一直是我的迷茫区域
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马