日期:2014-05-20  浏览次数:20561 次

为了避免one和two相互影响,我是不是应该使用这样的方式创建one和two?
如何避免变量不相互影响?
我有一个类Oneclass,
class Oneclass {
int a;
Oneclass(int x1) {
a=x1;
}
}

int x = 50;
创建两个个实例:
Oneclass one = new Oneclass(x);
Oneclass two = new Oneclass(x);
当我在程序后面通过one.a = 100;修改了one的值,由于two也是引用x的地址创建的,所以two.a也会跟随变为100,尽管我没有直接修改two的值。
为了避免one和two相互影响,我是不是应该使用这样的方式创建one和two?
Oneclass one = new Oneclass(new Integer(x));
Oneclass two = new Oneclass(new Integer(x));

------解决方案--------------------
int x = 50;
创建两个个实例:
Oneclass one = new Oneclass(x);
Oneclass two = new Oneclass(x);
当我在程序后面通过one.a = 100;修改了one的值,由于two也是引用x的地址创建的,所以two.a也会跟随变为100,尽管我没有直接修改two的值。

不对吧?
------解决方案--------------------
在java里,给自定义对象赋值实际上是赋值引用。one 和 two是两个不同的对象 各自有不同的属性值 你修改one 不影响two。
除非你这样
Oneclass one=new Oneclass(x);
Oneclass two=one;

后面的程序你修改one.a=100 two所指向跟one是同一个对象,所以two会跟着变动。