Java中虽然传的是引用,但是用的时候是直接操作的原对象。你虽然是给的LIST引用,但是LIST会通过引用把原对象拿到,之后你给的那个引用跟他没有关系了。
举个栗子:
你拿了一个laser(汉字不让发啊)(引用)在墙上刻了一个字(对象),然后用LASER指给LIST让它记下来,
然后!你又用LASER在墙上别处刻了另一个字,现在已经有两个字了,新的还没有告诉LIST,所以LIST不知道啊~
除非你把LASER指回去,改原来那个字~
明白了,List中存储的是s1的副本,后面对s1的修改不会影响到list中的副本
@迷路的猫: 副本 这个词可能不太恰当,对象只有一个~也不清楚你对JAVA里面对象了解多少,大体讲一下:JAVA里面没有一个东西是可以拿到一个对象的实体的,都是拿到的引用。就像银行里面的钱与账号密码一样,任何机构看到的都是数字,并不是钱本身。
你拿张纸,开了一个户存上钱,然后你把纸上的账号告诉了LIST,这时候,你和LIST手里面的都不是钱本身,而是钱的代表,也就是引用。
然后把纸擦了又写上了一个新开的户的账号,你往里面存钱LIST是不知道的。
当然,也可以再把纸上擦了写回原来的账号,你如果操作里面的钱的话,LIST一查也会发现的。
这里面,钱就一份,没有副本。
再多说一句,如果没有任何东西拿着银行里的一个户的账号的话,那这个账户就是垃圾了,上帝会发现并清理的,这就是GC
乱乱的,凑和着看看吧
@之奇一昂: 不错不错,多谢帮助