黑马程序员技术交流社区

标题: 当两个引用变量指向同一个地址值,修改其中一个值会有..... [打印本页]

作者: Mydream524    时间: 2014-12-14 12:54
标题: 当两个引用变量指向同一个地址值,修改其中一个值会有.....
本帖最后由 Mydream524 于 2014-12-19 23:21 编辑

如下代码,结果为11,这说明w2.size调用的是地址值然后赋给s,而后s有了指向所以得到如下结果么。
  1. class Wrench2
  2. {
  3.         int size;
  4.         public static void main(String[] args)
  5.         {
  6.                 Wrench2 w = new Wrench2();
  7.                 w.size = 11 ;
  8.                 Wrench2 w2 = go(w, w.size);
  9.                 System.out.println(w2.size);               
  10.         }

  11.         static Wrench2 go(Wrench2 wr, int s)
  12.                 {
  13.                         s = 12;
  14.                         return wr;
  15.                 }
  16. }
复制代码


作者: Mydream524    时间: 2014-12-14 12:56
自己赞一个.{:3_50:}
作者: Mr.陈    时间: 2014-12-14 13:14
个人认为  你只是把对象wr当作参数传给了go方法  对于wr未做任何修改 就返回去了
System.out.println(w2.size); 中的size调用的是类class Wrench2 中的那个变量

8.png (16.04 KB, 下载次数: 23)

8.png

作者: 姿_`态    时间: 2014-12-14 13:38
本帖最后由 姿_`态 于 2014-12-14 13:39 编辑

[attach]60850[/attach]把11赋值给了s.size 然后把s.size给了s, s=12;也就是11=12 ,size没有任何改变。
所以返回的wr的size还是成员的size,但是手动给他赋值,结果就变了





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