程序如下
public class test{  int count=9;
 public static void main (String[] args){

 new test().change();
 new test().change1();
 //test t=new test();
 //t.change();
 //t.change1();
   
 }
 public void change()
 {
 count=10;
System.out.println(count); 
 }
 public void change1()
 {
 
System.out.println(count); 
 }
}程序运行结果:10,9
如果把注释放开,把两个new注释掉,也就是只new出一个对象t来,然后用t去调用两个方法,那么结果就是10,10
为什么呢?小弟不解的是,这种在方法中将属性值重新赋值的方法,到底有没有改变本身属性的值?

解决方案 »

  1.   

    new两个test对象,跑的结果当然是10,9,count属性对每个对象来说是独立的,A对象通过change方法调用,count属性为10,对于B对象的count属性没有影响。如果是new一个test对象t,结果当然是10,因为count属性在change方法中已经赋值为10了。
      

  2.   

    两个new的话   会创建两个内存空间  彼此不打扰
    注释掉  只用一个的话  就只有一个内存空间    第一个方法会干扰count值
      

  3.   

    count属性对每个对象来说是独立的
    这句话让我恍然大悟。谢谢各位的回答!~
      

  4.   


      new test().change();  //你这里new了两个对象。。
     new test().change1();
     //test t=new test(); //这里只创建了一 个对象
     //t.change();
     //t.change1();