最近遇到一个题
public static void main(String[] args) {
StringBuffer s1 = new StringBuffer("A");
StringBuffer s2 = new StringBuffer("B");
fff(s1,s2);
System.out.println(s1 + "." + s2);
}
public static void fff(StringBuffer a,StringBuffer b) {
a.append(b);
b=a;
}
刚开始自以为是值传递,没有返回并赋值所以原来的对象值应该不会变,运行后发现输出 AB.B
然后网上查了一下才知道,当传递的是基本数据类型时是值传递如
public static void main(String[] args) {
int n = 3;
System.out.println(" n = " + n);
changeData(n);
System.out.println(" n = " + n);
}
public static void changeData(int n) {
n = 0;
}
输出的是n=3 n=3
当传递的是对象时就是地址引用如第一个例子
所以写在这里加强记忆,以后在工作中避免bug