- 原来我居然是别人眼中的逗比。。。看来天性释放后,我也得从新认识本身了啊。
如下代码结果是什么?java
public class foo { public static void main(String sgf[]) { StringBuffer a=new StringBuffer(“A”); StringBuffer b=new StringBuffer(“B”); operate(a,b); System.out.println(a+”.”+b); } static void operate(StringBuffer x,StringBuffer y) { x.append(y); y=x; } }
A 代码能够编译运行,输出“AB.AB”。
B 代码能够编译运行,输出“A.A”。
C 代码能够编译运行,输出“AB.B”。
D 代码能够编译运行,输出“A.B”。app
这里简单地说,a,b,x,y就是四个指针。y原本指向的是b所指向的对象,可是一个“=”,y就指向了x所指向的目标便是a指向的对象,所以原来b所指向的目标并无发生任何改变。与y不一样的是,x进行的是对象操做,此时此对象在内存中是真正的本质上的改变。
往方法中传参,传的仅仅只是地址,而不是实际内存,因此不要觉得y=x程序的执行,是 b=a的执行。这二者是不相等的