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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© world.net 中级黑马   /  2015-6-12 08:43  /  163 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

为什么输出结果是AB:B啊?,如果输出语句写在function方法中输出结果是AB:AB
  1. class Test{
  2.         public static void main(String[] args){
  3.            StringBuffer sf1=new StringBuffer("A");
  4.                    StringBuffer sf2=new StringBuffer("B");
  5.                    function(sf1,sf2);
  6.                     System.out.println(sf1+":"+sf2);//此处输出结果为AB:B
  7.         }
  8.         public static void function(StringBuffer sf1,StringBuffer sf2){
  9.               sf1.append(sf2);
  10.                           sf2=sf1;

  11.         }
  12. }
复制代码

2 个回复

倒序浏览
本帖最后由 q19871127 于 2015-6-12 12:37 编辑

方法中的sf1与sf2只是两个引用地址  你让他们两个相等并没有改变两个buffer的内容  function方法重的变量sf1和fs2跟main方法中的是没有什么关系的 你改变function中变量的引用不会改变main方法中变量的引用
而append是改变了buffer中的值  


回复 使用道具 举报
楼上正解
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马