新手java入门的程序,关于拷贝

public class account {
public int number,id;
public static int value;
public String time;
public String name;
static int count=0;

public account(int number,String name,String time,int id,int value)
{
this.number=number;
this.name=name;
this.time=time;
this.id=id;
this.value=value;

count++;
}

public account(){
this(1,"c","1996",54163,5700);
account.count++;
}

public account(account a){
this(a.number,a.name,a.time,a.id,a.value);
account.count++;
}

public void finalize()
{
System.out.print("释放对象("+this.toString()+")");
account.count--;
}

public void put(int x){
value=value+x;
}

public String toString(){

return number+","+name+","+time+","+id+","+value;

}

public static void main(String args[])
{
account a1=new account(1,"张","1996",54163,5700);
a1.put(2000);
account a2=new account(a1);
a2.name="李";a2.number=50;a2.id=57560;
a2.put(1000);
System.out.print(a1.toString()+"和"+a2.toString());
a1.finalize();
a2.finalize();
}
}
put那边我希望a1是存2000,a2存1000,但是结果都是8700,都是存的两千,是拷贝构造的问题吗,应该怎么解决

value的属性是静态的那么他就属于类变量,也为所有对象共享,

你这本来就该该是8700,和什么拷贝构造有什么关系·这不是你自己写的么?

public static int value;把static去掉就可以得到你要的结果了!

value的属性是静态的。两次都修改了同一个变量的值

把static修饰符去掉就好了