关于java的问题:刚才在写一个java程序,其中有一段代码是这样的: List<Object>

关于java的问题:刚才在写一个java程序,其中有一段代码是这样的:List<Object>a=newArrayList<Object>();..........pub... 关于java的问题:刚才在写一个java程序,其中有一段代码是这样的:

List<Object> a=new ArrayList<Object>();
..........
public void aa(){■
List<Object> b=new ArrayList<Object>();■
b.addAll(a);■
new C().sub(b);■
}

a里面原本有一个值为5.02的bigdecimal
我在带正方形的地方都加上了一句System.out.println(a.toString());
输出却是这样的
5.02
5.02
5.02
1
为什么会这样?5.02不是应该不变的吗?我仔细看了很多次代码,非常非常确定在进行aa()的时候没有任何其它代码改变a里的元素
那为什么会出现这种情况?我已经被这个问题困扰了两个小时了,谁能帮我一下,谢谢!
展开
 我来答
百度网友7cd29db
2015-07-21 · TA获得超过213个赞
知道小有建树答主
回答量:186
采纳率:66%
帮助的人:77.8万
展开全部
如果你不想改变a里面的值,就不要把a的元素添加到b里面,可以考虑copy一个新的BigDecimal对象放到b里面,或者使用int,double这种类型的数据
更多追问追答
追问
您好,我试过把list改为vector,再clone(),或者把集合里的元素全部都clone()一遍,在list前加private不让别的地方修改,但都不行,里面的值还是改变,到底是为什么呢?
能改变a的代码就那里了
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式