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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© loading……99.9 中级黑马   /  2013-10-11 17:00  /  1496 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 loading……99.9 于 2013-10-12 11:45 编辑
  1. public static void main(String[] args)
  2.         {
  3.                 String str = "1111";
  4.                 StringBuffer arg = new StringBuffer("1111");
  5.                 char[]kk = {'q','w','e'};
  6.                 swap(str, arg, kk);
  7.                 System.out.println(str);
  8.                 System.out.println(arg);
  9.                 System.err.println(Arrays.toString(kk));
  10.         }
  11.         public static void swap(String str, StringBuffer arg,char[]kk)
  12.         {
  13.                 str = "bbb";
  14.                 arg.append(333);
  15.                 kk[2] = 'w';
  16.         }
复制代码
输出结果是什么?为什么呢?

3 个回复

倒序浏览
1111                    //打印str的索引
1111333               //StringBuffer将333连接到arg的末尾
[q, w, w]              //kk[2] = 'w';将‘w’赋给kk[2];
回复 使用道具 举报
1111            //虽然str传入了swap中,但是swap内的str的指向发生了改变。主函数里面的没有
[q, w, w]         //swap里面修改了引用的char[]的值,所以影响到了主函数
1111333        //修改了对象,影响到了主函数
回复 使用道具 举报
To 金牌黑马 2013-10-12 11:20:09
板凳
楼主你好,如果问题已解决请将帖子状态改为提问结束,如果未解决请继续提问,谢谢合作。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马