开发者社区> 问答> 正文

java StringBuffer传参问题

public static void mb_method(StringBuffer x, StringBuffer y) {    
    x.append(y);    
    y = x;   
}   
public static void main(String[] args) {     
    StringBuffer a = new StringBuffer("A");     
    StringBuffer b = new StringBuffer("B");     
    mb_method(a, b);     
    System.out.println(a + "," + b);   
} 

为何输出结果是:
AB,B

展开
收起
蛮大人123 2016-03-06 18:18:47 2047 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    java的方法都是值传递,你在mb_method 里面, 让y赋值为x对外面的b根本没有影响。这里面的赋值都在在方法栈里面的,出栈之后,里面的复制跟外面无关。
    这个方法可以简单认为是这样:
    Sb a; Sb b; //invisable
    Sb x = a;
    Sb y = b;
    x.append(xx);
    y=x;
    这样, y的改变,对b没有任何影响。
    而a的值(实际上不是他的值变了,而是指向的对象修改了成员)为啥会改变,是因为方法中的x和a都指向了同一个对象,所以对x做成员操作就跟对a做成员操作一样。

    2019-07-17 18:55:02
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载