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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 河边捉虾米 中级黑马   /  2016-9-17 21:15  /  547 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

3.        下面程序的运行结果是什么(  A  )   
  public static void main(String[] args){
                String s1 = “abc”;
                String s2 = “xyz”;
  show(s1,s2);
System.out.println(s1+”-----”+s2);
}
static void show(String s1,String s2){   
         s1 = s2+s1+”Q”;
         s2 = “W”+s1;   
}
//因为没有返回,所以出了方法就失效了
a)        abc-----xyz
b)        xyzabcQ-----xyzWabc
c)        xyzabcQ---- xyzabcQWabc
d)        xyzQ----Wabc

个人认为这里的坑在于没有返回值,请大神们看看是这么样子的么?

5 个回复

倒序浏览
这是一道陷阱提,void不需要返回值,直接调用方法即可。
回复 使用道具 举报
不是没有返回值的问题,是调用方法时参数传递问题.
回复 使用道具 举报
jiubaK 发表于 2016-9-18 00:15
不是没有返回值的问题,是调用方法时参数传递问题.

额,兄弟,你详细说说,我以为只是没有返回的问题,把你的理解说说呗
回复 使用道具 举报
河边捉虾米 发表于 2016-9-18 12:19
额,兄弟,你详细说说,我以为只是没有返回的问题,把你的理解说说呗

要区分传递的是引用数据类型还是基本数据类型
基本数据类型作为参数传递时,你做任何更改都是不影响原数据的;
引用数据类型作为参数传递时,你所做的更改会影响到原数据(除了String,String比较特殊).
其实,引用数据类型之所以会有这个效果,是因为传递的是地址值,你在任何地方通过这个地址值去做修改,当然能够影响到原数据.而String之所以特殊,是因为String字符串一旦初始化后,就不能改变(不知道你能不能理解这句话,建议不理解的话,多画画内存图)
回复 使用道具 举报
jiubaK 发表于 2016-9-18 16:12
要区分传递的是引用数据类型还是基本数据类型
基本数据类型作为参数传递时,你做任何更改都是不影响原数据 ...

理解了,感谢你的点拨,顿悟了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马