- public class MyClass{
- static void aMethod(StringBuffer sf1,StringBuffer sf2{
- sf1.append(sf2);
- sf2 = sf1;
- }
- public static void main(String[] args){
- StringBuffer sf1 = new StringBuffer("A");
- StringBuffer sf2 = new StringBuffer("B");
- aMethod(sf1,sf2);
- System.out.println(sf1+":"+sf2);
- }
- }
public class MyClass{
static void aMethod(StringBuffer sf1,StringBuffer sf2{
sf1.append(sf2);
sf2 = sf1;
}
public static void main(String[] args){
StringBuffer sf1 = new StringBuffer("A");
StringBuffer sf2 = new StringBuffer("B");
aMethod(sf1,sf2);
System.out.println(sf1+":"+sf2);
}
}
这个结果为啥是AB:B啊?
分析:
1 主方法以引用的方式传递过去了2个对象 StringBuffer
2 方法里也有2个引用作为参数也指向了这2个对象,他们是sf1 和 sf2, 注意此处的sf1和main方法的sf1可不是同一个,他们有着不同的作用域。
3 调用方法,修改了对象的内容,所以此时 sf1指向的对象内容为 AB
4 将方法里的sf2 指向了 sf1, 这个操作之影响调用方法里的参宿引用,并不影响main方法里的引用
5 返回了, main方法里 sf1指向的对象已经变成了 AB, 而sf2指向的对象没有任何变化
本文通过一个具体的 Java 示例解释了 StringBuffer 在方法间传递时的行为。重点在于理解 Java 中对象引用的传递机制,以及如何影响原始对象的状态。
1567

被折叠的 条评论
为什么被折叠?



