import java.util.*;
class A{
       private int i=0;
       public int getI(){
       return i;}
       public void setI(int i){
       this.i =i;}
   }
public class Main {
    
    public static void main(String[] args) {        A a = new A();
        A b = new A();
        a.setI(4);
        b.setI(9);
       a=b;
       a.setI(6);
       System.out.println("a"+a.getI());
         System.out.println("b"+b.getI());
    }
    
}我试过编译得出a=6,b=6
为什么b=6???

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【jordanlai】截止到2008-07-02 01:10:03的历史汇总数据(不包括此帖):
    发帖的总数量:3                        发帖的总分数:40                       
    结贴的总数量:1                        结贴的总分数:10                       
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:2                        未结的总分数:30                       
    结贴的百分比:33.33 %               结分的百分比:25.00 %                  
    无满意结贴率:0.00  %               无满意结分率:0.00  %                  
    楼主该结一些帖子了
      

  2.   

    a=b;说明a是b的引用 ,所以结果都是6
      

  3.   

          a=b; //把对象b的引用送给了a,这时a和b指向的是同一个对象。
          a.setI(6); 
          System.out.println("a"+a.getI()); 
            System.out.println("b"+b.getI()); //既然是同一个对象,当然输出的属性值也一样拉。
    小结:我们平时总是说我们创建了一个对象a,a其实不是这个对象,它只是该对象的一个引用,但是呢,为了方便,我们也就这样称呼它了。
      

  4.   

    a=b;//把对象b的引用赋给了a
    此时,a,b的引用都指向了堆中的a的对象
    a.setI(6);//通过a的引用改变堆中的属性,因为a,b都指向同一个对象,所以输出结果为6,6
      

  5.   

    a = b;
    这句执行之后
    a和b就是同一个对象了
    如果你把a.setI(6);改成b.setI(6);
    也是同样的结果
      

  6.   

    a和b在a=b后就共用一个内存了
      

  7.   

    a=b表明a 和b是同一个对象的引用
      

  8.   

         a=b; //把对象b的引用送给了a,这时a和b指向的是同一个对象。 
      

  9.   

    如代码所示本来a,b引用了两个不同的对象,但是在执行了a=b操作后使得两个变量同时指向了一个对象也就是它们引用了相同的对象,这时不管你用哪个变量进行操作,改变的都是同一个对象。
      

  10.   

    知道String 对象在内存中怎么存储的吗?值存储和引用存储不一样,像String  是个对象,它实际存储的是个内存地址,具体的要看地址指向的内存数据,就想电视机和遥控器一样,好好想象很容易理解的
      

  11.   

    你同时实例化两个对象a,b,然后把b赋值给a,此时a的引用已经指向b的引用,就说明a,b引用的是同一个内存地址(也就是b的引用指向的对象),然后你改变了a所指向的引用的属性,b因为跟a是指向同一个地址上的对象,所以他们的值相同。