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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

去企业面试的时候,老是被问到这个问题,感觉每次回答的让面试官不是很满意,数据类型的时候是传值,还是什么情况下传值,求解答,顺便刷下论坛,帮帮忙..............

4 个回复

倒序浏览
1、一般情况基本数据类型传的是值,包括基本类型的封装,如Integer、Double等,String也是是传值,比较特殊。而非基本类型传递是引用,引用也是一种类型,它也有值,而这个值就是对象实际的内存地址,通过这个引用可以改变内存的地址
2、对于函数调用,需要看实现方式,有的会对传递的对象状态进行改变,有的不会对对象状态进行改变,简单的判断规则是,如果返回值是void,那么就很可能会对对象状态进行改变,而返回值不为void,那么就很可能不会对对象状态进行改变。
下面举个传引用的例子:
StringBuffer a= new StringBuffer("xX");
函数调用:
        一、会对参数对象状态进行改变,返回值是void
        void change(StringBuffer b){
                b.append("ddd");
        }
        二、不会对参数对象状态进行改变,返回值不为void
        StringBuffer change(StringBuffer b){
                b = new StringBuffer("ss")
                b.append("ddd");
        return b;
        }


评分

参与人数 1技术分 +1 收起 理由
SyouRai_Tsk + 1

查看全部评分

回复 使用道具 举报
学习了。。。
回复 使用道具 举报
杨庆雷 发表于 2014-6-24 14:20
1、一般情况基本数据类型传的是值,包括基本类型的封装,如Integer、Double等,String也是是传值,比较特殊 ...

多谢了!
回复 使用道具 举报
学习了,确实还没注意到这细小的差别。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马