先说明:Java只有值传递
- 1.如下的代码调用:
public class Main {
public static void main(String[] args){
StringBuffer stringBuffer = new StringBuffer("Hello");
int a=1;
modify(stringBuffer,a);
System.out.println("a="+a); //1
System.out.println("stringBuffer="+stringBuffer);//Hello World
}
private static void modify(StringBuffer stringBuffer,int a){
stringBuffer.append(" World");
a=2;
}
}
下面来说明一下为什么结果是a不变,stringBuffer 改变。
以JVM函数调用为,栈帧的出栈入栈为例:

- 2.如下的代码调用:
public static void main(String[] args){
StringBuffer stringBuffer = new StringBuffer("Hello");
int a=1;
modify(stringBuffer,a);
System.out.println("a="+a); //1
System.out.println("stringBuffer="+stringBuffer);//Hello
}
private static void modify(StringBuffer stringBuffer,int a){
stringBuffer = new StringBuffer("World");
a=2;
}
