你在读基础班还是就业班,可以语音或者电话告诉你.
你还没有理解函数的形式参数的意义.
在调用change( )方法时,实际上就是栈内存中,change( )内,重新创建了一个sb1和sb2,然后把主函数中的sb1和sb2的地址值赋给了change( )方法中的sb1 和 sb2,\
所以 ,方法中sb1=sb2;实际上只是将change()方法中的sb2的地址值赋给了change()方法中的sb1,他们都指向堆内存中的对象.
接着是重点.你认真听;
确实,stringbuffer是引用数据类型,但是方法中不管是sb1或者是sb2,他们并未对堆内存中的对象做任何修改,只是在不停的换地址值而已.
如果方法中当方法弹栈,两个变量随即消失,打印的sb1和sb2只是之前的sb1和sb2
打了这么多,楼主你仔细琢磨下吧, |