本帖最后由 nxp1986 于 2014-8-11 08:35 编辑
我也看看答案,其实第一道还是比较容易理解的,就是堆内存中相互赋值然后,s2=s1就是像楼上说的那么多一样,所以输出s2肯定是 hellojava。
因为已经赋值了,所以s2.append(s1)其实就是在赋值完以后再添加s1.所以结果就是输出两次hellojava.
第二道题确实有点晕,s1=s2的时候,画个图应该比较容易理解,s1.append(s2)只是单纯的在s1里面添加s2的元素,没有从新指向。
而当s1=s2的时候s1直接指向了s2,所以输出的是s2的内容。因为s1已经指向了s2,也就是说内存中的地址是一样的,所以当s2.append(s1)的时候,必须输出的是javajava了。
|