黑马程序员技术交流社区

标题: 作用域问题。 [打印本页]

作者: world.net    时间: 2015-6-12 08:43
标题: 作用域问题。
为什么输出结果是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. }
复制代码

作者: q19871127    时间: 2015-6-12 09:20
本帖最后由 q19871127 于 2015-6-12 12:37 编辑

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



作者: xbutterflyx    时间: 2015-6-12 13:32
楼上正解




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