解决方案 »

  1.   

    传的是索引,对象本身不会copy
      

  2.   

    现在弄明白了,在调用fun()这个函数时,会在栈中创建一个变量d2,但是并不会将这个对象进行实例化(在堆中是不会分配内存的),这个d2用于接收入参(d1这个对象的引用,也就是d1所指向的堆内存地址),这样d2和d1实际上“共享了”堆内存中d1这个对象,对d2所指向的内容进行操作也会改变d1的内容的,这就像一个房间一开始只有一个门(d1)能进去,这个房间中摆放了些东西,后来又打通了一个门(d2),如果从d2这个门进去修改这个房间中的布置,你再从d1进去,看到的是修改后的房间布置。
      

  3.   

    对,其实相当于传进去的是对象的引用地址的拷贝,在栈中相当于有了两个栈引用可以指向堆中创建对象时所分配的内存空间,在fun方法里你是通过一个拷贝引用然后间接修改了实际堆内存中的对象。这时用原来的对象引用去访问堆内存时,相应的属性已经被修改了