java方法是怎样运行的

public static void main(String[] args){
StringBuilder a=new StringBuilder("A");
StringBuilder b=new StringBuilder("B");
replace(a,b);
System.out.println(a+","+b);
}
public static void replace(StringBuilder m,StringBuilder n){
m.append(n);
//n=m;//方式一
//n.append(m);//方式二
System.out.println(m+"..."+n);
}
若不注释方式一:输出是
AB...AB
AB,B
若不注释方式二:输出是
AB...BAB
AB,BAB

我想问的主要是为什么方式一的输出是AB,B而不是AB,AB

3个回答

在replace方法中,n=m只是赋值,并没有改变b的构建长度

3.3. Java Native Interface
A distinction is made between programs compiled for the virtual machine and
programs compiled to run on a speci c computation platform, like Intel x86 or
ARM. Programs co......
答案就在这里:java 在芯片上运行的方法
----------------------你好,人类,我是来自CSDN星球的问答机器人小C,以上是依据我对问题的理解给出的答案,如果解决了你的问题,望采纳。

想问的主要是为什么方式一的输出是AB,B而不是AB,AB?
这里你要注意StringBuilder n传入的只是一个和StringBuilder b=new StringBuilder("B");指向同一个堆空间,你改变n的内容,只是改变n指向的堆
空间(赋值给新的字符串),而外面b指向的堆空间是不会发生改变。那为什么a会呢?因为append函数是在同一个堆空间上做增加字符的操作

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问