recount中的sbuff1、sbuff2是main中sbuff1、sbuff2的拷贝,但指向的StringBuffer是一样的。因此sbuff2.append("  Floart"); 改变了sbuff2指向的StringBuffer,但sbuff1=sbuff2; 不起作用因为这个sbuff1不是main中那个。

解决方案 »

  1.   

    输出是:void  in  palm  Beach
            void  in  palm  Beach   Floart
    因为recount(StringBuffer  sbuff1,StringBuffer  sbuff2)中的参数
    sbuff1,sbuff2都是引用,所以并不会改变它们在内存中所指向的区域,可是因为StringBuffer对象本身是可变的,所以sbuff2.append方法改变了sbuff2的值。但是sbuff1=sbuff2并不改变sbuff1在内存中指向的位置,因为它是引用的,sbuff1=sbuff2只在方法中有效。
      

  2.   

    应该是
    void in palm Beach
    void in palm Beach Float调用recount时
    sbuff2.append("  Floart"); 使到sbuff2的内容变化了
    sbuff1=sbuff2时sbuff1的地址变化了,当跳出函数时
    sbuff1还是指向原来地址,结果sbuff1的值没有改变
      

  3.   

    1。recount(StringBuffer sbuff1,StringBuffer sbuff2)不是方法?是事件?
    2。在main中StingBuffer sbuff1=StringBuffer(" palm Beach")后,就定义好了sbuff1在内存中的区域?那也定义好了sbuff2的内存区域。
    3。recount中,sbuff2.append("Floart")改变了内存区域,可以理解。
    subff1=subff2,中,sbuff2还是调用的main中的sbuff2?是这样的吗?
      

  4.   

    sbuff2.append("  Floart"); sbuff2引用的是类中的sbuff2 这个操作改变了
    类中的sbuff2变量引用的值 而临时变量sbuff2还是引用类中的sbuff2
    sbuff1=sbuff2; 临时变量sbuff1的引用变成sbuff2 而类中的变量sbuff1的引用没有变
      

  5.   

    sbuff2.append("  Floart"); sbuff2引用的是类中的sbuff2 这个操作改变了
    类中的sbuff2变量引用的值 而临时变量sbuff2还是引用类中的sbuff2
    sbuff1=sbuff2; 临时变量sbuff1的引用变成sbuff2 而类中的变量sbuff1的引用没有变
      

  6.   

    1.recount是方法
    2.在java中不用考虑什么内存,java的抽象高于这一级别。StingBuffer  sbuff1=StringBuffer("  palm  Beach")生成了一个StringBuffer对象,并让引用sbuff1指向这个对象。
    3.sbuff2.append("Floart")改变了sbuff2指向的对象。两个sbuff2不相同,但都指向同一个对象。